Big-O で演算回数を数える
定数時間から二次時間までを平易に学びます
「Big-O で演算回数を数える」はCoddyKit上の無料Coding Interview Prepレッスンです。 これはレッスン1/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはCoding Interview Prep学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Coding Interview Prepコースには全4レッスンが含まれています。
操作回数を数える理由
コンテストでは速度が勝敗を分けます。コードの実行時間を測る代わりに、必要な手順の数を見積もります。この見積もりが時間計算量です。🚀
Big-O を知る
Big-Oは、入力サイズ n が大きくなるにつれて操作回数がどのように増えるかを表します。細かな要素は無視し、支配的な傾向に注目します。
定数時間 O(1)
処理量が n にまったく依存しない場合、それは O(1) です。リストの要素を1つ読み込む処理や1回の加算は、常に同じ時間で完了します。
x = arr[0]
y = a + b線形時間 O(n)
n 個の要素を1回走査する単純なループは O(n) です。入力を2倍にすると、処理量もおよそ2倍になります。日常的に最もよく使う計算量です。
for x in arr:
total += x二次時間 O(n の 2 乗)
n 個の要素に対するループの中に、もう1つループがあると O(n^2) です。n = 1000 なら100万ステップになり、ここから急速に増加します。
for i in range(n):
for j in range(n):
check(i, j)対数時間 O(log n)
各ステップで問題の大きさを半分にすると、O(log n) になります。二分探索なら、10億個の要素にも約30ステップで到達できます。✨
増加率の階段
速い順から遅い順に並べると、一般的な計算量の順序は O(1)、O(log n)、O(n)、O(n log n)、O(n^2) です。上にあるほど、入力が増えても効率よく処理できます。
定数倍を無視する
Big-O では定数倍を無視するため、O(2n) は単に O(n) です。2回走査しても増加は線形なので、倍数によって計算量のクラスは変わりません。
最大の項だけを残す
項を足し合わせる場合は、最も速く増加する項だけを考えます。O(n^2 + n) は O(n^2) になります。n が大きくなると n^2 が n を圧倒するためです。
連続ループと入れ子ループ
2つのループを続けて実行すると、合計は O(n + n) = O(n) です。2つのループを入れ子にすると O(n^2) になります。どちらになるかは、ループの構造から判断できます。
最悪ケースから考える
コンテストでは最も難しいテストケースで判定されるため、最悪ケースについて考えます。途中で早期終了すると仮定せず、ループが最後まで実行されると考えてください。
確認問題
Big-O の感覚を試してみましょう。
復習
コードを、O(1)、O(n)、O(n^2)、O(log n) といった増加率として読めるようになりました。定数倍を捨て、最大の項を残し、最悪ケースを考えてください。🎯
よくある質問
「Big-O で演算回数を数える」レッスンは無料ですか?
はい。「Big-O で演算回数を数える」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Coding Interview Prepコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Coding Interview Prepコースには全4レッスンが含まれています。
「Big-O で演算回数を数える」で何を学びますか?
定数時間から二次時間までを平易に学びます ブラウザで直接実行するハンズオンコードでCoding Interview Prepを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Coding Interview Prepを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのCoding Interview Prepは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン1/4です。
「Big-O で演算回数を数える」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このCoding Interview Prepレッスンでコードを書いて実行できますか?
はい。すべてのCoding Interview Prepレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- Big-O で演算回数を数える
- 10^8 の経験則
- 制約を読み、計算量を選ぶ
- TLE が起きる理由と見つけ方