単純なアルゴリズム問題からO(1)が何を意味するかを説明する

単純なアルゴリズム問題からO(1)が何を意味するかを説明する

[[396914]]

今日、クラスメートがファングループでアルゴリズムに関する質問をしました。

対話のトピックは次のとおりです。

質問では、各要素が 1 回だけ表示されるように、順序付けられた配列 nums から重複する要素を削除する必要があります。削除後の配列の長さを返します。追加の配列スペースは使用されず、空間計算量は O(1) です。

この学生が間違いを犯した理由は、O(1)空間計算量が何を意味するのか理解していなかったからです。実際には 3 行目で新しいリストを生成します。このリストの長さは、元のリストの長さに依存します。元のリスト内の重複しない要素が多いほど、新しいリストは長くなるため、その空間計算量は O(n) になります。さらに、この質問では、新しいリストを生成するのではなく、元のリストを「その場で」変更する必要があります。

まず、O(1)空間計算量とは何かについて説明しましょう。これは、1 つの変数のみを適用できるという意味ではなく、適用する追加変数の数は一定であり、入力リスト内の要素の数に応じて変化しないという意味です。したがって、10,000 個の変数を適用する場合でも、元の入力リストに 1 つの要素がある場合でも 1 億個の要素がある場合でも、常にこれらの 10,000 個の変数のみが使用されるため、空間計算量は O(1) であるとも言えます。

ここで、インプレース変更と呼ばれるものについて説明しましょう。つまり、新しいリストを追加で使用せずに、入力リストを直接変更します。 Python では、リストに要素を追加するには xxx.append(yy) を使用し、インデックスに従ってリストから要素を削除するには xxx.pop(index) を使用することがわかっています。どちらもインプレース変更です。

この質問に戻りますが、これは LeetCode の簡単な質問です。より良いインターネット企業に応募したい場合は、この種の質問に簡単に答えられるはずです。

この問題の鍵となるのは、元のリストが順序付きリストであるため、繰り返される数字が連結されている必要があるということです。したがって、現在の要素が前の要素と同じかどうかを 1 つずつ確認するだけで済みます。同じ場合は、現在の要素を削除します。異なる場合は、次の要素を確認します。

それでは、コードを書いてみましょう:

  1. クラスソリューション:
  2. 重複データを削除します。
  3. 数値でない場合:
  4. 0を返す
  5. 最後= なし
  6. インデックス= 0
  7. 長さ = len(数値)
  8. インデックス< 長さの場合:
  9. ele = nums[インデックス]
  10. インデックス== 0 の場合:
  11. 最後= 要素
  12. インデックス= 1
  13. elif ele == last :
  14. 長さ -= 1
  15. nums.pop(インデックス)
  16. それ以外
  17. 最後= 要素
  18. インデックス+= 1
  19. 戻り長さ

実行効果は以下の図に示されています。

この問題の時間計算量は O(n) であることに注意してください。これは、インデックスに従ってリストから要素が削除されると、後続の要素が 1 つずつ前方に移動するためです。一般的に言えば、時間の計算量と空間の計算量を同時に達成することはできません。空間を時間と交換したり、時間を空間と交換したりすることはできますが、空間や時間を占有せずに両方を同時に行うことは困難です。

この記事はWeChatの公開アカウント「WeiwenCode」から転載したもので、以下のQRコードからフォローできます。この記事を転載する場合は、WeiwenCode の公開アカウントにご連絡ください。

<<:  ドローンの耐久性の低さの問題を軽減するために、一般の人がこれを行うことができます

>>:  シナリオイノベーションがスマート発電所を強化 | Ruijie Networks が 2021 年スマート発電所フォーラムに登場

ブログ    
ブログ    
ブログ    

推薦する

機械学習に関する7つの誤解

ディープラーニングを学ぶ過程では、私たちが当たり前だと思っているさまざまな噂やさまざまな「こだわり」...

金融規制当局が注意喚起:「AIによる顔の改変」などの新たな詐欺手法に注意

10月9日、近年、犯罪者が詐欺の手口を絶えず革新しており、金融消費者がそれを防ぐことが困難になってお...

人工知能は標的の照準を加速し、人間と機械の統合を支援して即時攻撃を可能にします。

米国の国防月報ウェブサイトは2020年9月23日、米陸軍当局者が、8月11日から9月23日まで行われ...

2022 年の銀行業界における AI とビッグデータのトップ 10 トレンド

当初の目標は人間と同じくらい知的な機械を持つことでしたが、人工知能ではなくインテリジェントオートメー...

...

AIとIoTが交通管理をどう変えるのか

人工知能 (AI) とモノのインターネット (IoT) はどちらも、私たちの周りの世界で注目を集め始...

AIは人間よりもチップ設計をよく理解しているのでしょうか?

この記事はLeiphone.comから転載したものです。転載する場合は、Leiphone.com公式...

Baidu Brain OCR技術がBaimiaoアプリを強化:AIが視覚障害者の目となる

現実には、あらゆる種類の印刷されたテキストや、周囲のあらゆるものを何の障害もなく簡単に読むことができ...

そうだ!機械学習を使用してビリビリの株価動向を予測する

[[419019]]この記事では、主にPythonを使用してビリビリの株価を分析する方法について説明...

...

...

美団の店舗ビジネスにおける異種広告混合配置の探求と実践

著者 | 屈譚旭洋 他LBS (位置情報サービス) の距離制約により、候補数が少ないと店内広告ランキ...

GoogleはAIを活用して古い地図情報を更新

Google はブログ投稿で、同社の AI がさまざまな要素を分析して、こうした更新を行うべきかどう...

人工知能はメタバースのビジョンの実現に役立つでしょうか?

現在、メタバースの分野は、誇大宣伝と新規プロジェクトの立ち上げ数の点で急速に成長しており、業界の市場...

COVID-19ヘルスケア市場はこれまでと異なる

[[355787]]画像ソース: https://pixabay.com/images/id-537...