アルゴリズムの練習がなぜ重要なのか?私が最初に問題を解き始めたときのように世間知らずにならないでください。時々アルゴリズムをいくつか解くのは楽しいと思っていましたが、練習にあまり時間をかけず、ただ問題を解くことだけに専念していました。時々、問題を不注意に解いてしまうこともありますが、なぜそうしたのか理解できません。私自身としては、結局のところ、一日中アルゴリズムを解くというのはちょっとオタクっぽくて、実際の日常の仕事環境では実用的ではなく、長期的に見てもあまり利益をもたらさないだろうと考えていました。 「アルゴリズムを解く方法を知っていると、就職活動で競争上の優位性が得られます」 しかし、プログラマーの場合、日々の業務で複雑な問題が発生するのが現実であり、大企業は求職者の問題解決能力や細部への注意力を収集するための標準化されたプロセスを見つけなければなりません。つまり、あまり知られていない企業でも同様の評価方法を使用する傾向があるため、アルゴリズムを解く方法を知っていると、就職活動中に競争上の優位性が得られることになります。 アルゴリズムをより一貫して解き始めてすぐに、練習したり、これらの問題を解決するための最も効果的な戦略を学んだり、面接に向けて精神的に準備したりするためのリソースがたくさんあることに気付きました。 (Niuke.com、Likou、Lingkouなど) これらのサイトでは、面接の質問を練習するだけでなく、アルゴリズムを企業別にグループ化したり、人々が面接体験の詳細な概要を共有するアクティブなブログを埋め込んだり、プレミアムプランの一部として模擬面接の質問を提供したりすることさえあります。 最初は問題に本当に苦労してもがっかりしないでください。これは完全に正常なことです。非常に経験豊富な Python プログラマーであっても、十分なトレーニングを受けなければ、多くのアルゴリズムを短期間で解決するのは難しいことに気付くでしょう。 また、面接が期待通りに進まず、アルゴリズムを解き始めたばかりの場合でも、がっかりしないでください。面接に臨む前に、いくつかの質問を準備し、毎日定期的に練習するなど、何ヶ月もかけて準備する人もいます。 トレーニング プロセスを支援するために、電話コーディング面接で何度も出てくる 10 個のアルゴリズム (主に文字列操作と配列を中心としたもの) を以下に選びました。これらの質問のレベルは比較的簡単ですが、簡単に手に入るものが多いので、良い出発点としてご利用ください。 文字列操作数字を逆にする
平均単語長
文字列に対して簡単な計算を適用するアルゴリズムは非常に一般的なので、.replace() や .split() などのメソッドに精通しておくことが重要です。この場合、これらのメソッドは不要な文字を削除し、長さを簡単に測定して合計できる単語のリストを作成するのに役立ちました。 文字列の追加
どちらのアプローチも同じように優れていると思います。1 つ目は簡潔で、直感的な eval() メソッドを使用して文字列ベースの入力を動的に評価します。2 つ目は ord() 関数を巧みに使用して、文字の Unicode コード ポイントを介して両方の文字列を実際の数値として再構築します。本当に 2 つのうちどちらかを選択しなければならない場合、おそらく 2 番目のアプローチを選択します。これは、最初は複雑に思えるかもしれませんが、より高度な文字列操作アルゴリズムを必要とする問題を解決するときに便利なことが多いためです。 最初のユニークな文字を見つける
この場合も、2 つの解決策が提供されています。アルゴリズムにまだ慣れていない場合は、空の辞書から始まる単純なカウンターであるため、最初のアプローチの方が馴染みがあると思われます。 ただし、2 番目のアプローチを理解しておくと、長期的にはより役立ちます。これは、このアルゴリズムでは、文字カウンタを自分で構築するのではなく、単に collection.Counter を使用し、range(len(s)) を enumerate に置き換えたためです。これにより、インデックスの威力をよりエレガントに識別できるようになります。 有効な回文
「有効な回文」の問題はまさに古典的であり、さまざまな状況で何度も遭遇する可能性があります。この場合のタスクは、その反対の文字に一致する文字を最大 1 つ削除して天気をチェックすることです。 s = 'sadkas' の場合、関数は 'k' を除外して True を返し、回文である単語 'sadas' を取得します。 配列モノトーン配列
これはもう一つの非常に一般的な問題ですが、上記の解決策は 1 行で記述できるため、非常にエレガントです。配列が単調となるのは、単調増加または単調減少のいずれかであり、評価配列である場合のみです。上記のアルゴリズムは、反復可能オブジェクト内のすべての項目が True の場合は True を返し、それ以外の場合は False を返す all() 関数の機能を活用します。 all() 関数は、反復可能オブジェクトが空の場合にも True を返します。 ゼロを移動
.remove() メソッドと .append() メソッドは、配列を操作するときに役立ちます。この問題では、まず元の配列に属していたすべてのゼロを削除し、次にそれを同じ配列の末尾に追加するためにこれらを使用します。 空欄を埋めてください
どちらの場合も、ソリューションにはエッジ ケースを含める必要があります (ここでは簡潔にするために省略しています)。表面的には、これは簡単に構築できるアルゴリズムですが、for ループと if ステートメントで何を達成しようとしているのかを念頭に置き、None 値の操作に慣れる必要があります。 一致する単語と一致しない単語
この問題は非常に直感的ですが、アルゴリズムでは、set()、intersection() または &、symmetric_difference() または ^ などの非常に一般的な集合演算が利用されており、ソリューションをよりエレガントにするのに非常に役立ちます。 素数配列
もう一つの古典的な質問でこの記事を締めくくりたいと思います。素数の定義と剰余演算の両方に精通している場合は、谷(n)の範囲を調べることで簡単に解を見つけることができます(剰余演算)。 結論は この記事では、面接でよく聞かれる 10 個の Python アルゴリズムの解決策を紹介します。有名なテクノロジー企業との面接の準備をしている場合、この記事は一般的なアルゴリズムのパターンに慣れ、より複雑な問題に進むための素晴らしい出発点となります。また、この記事で紹介されている演習 (およびその解答) は、フォース ボタンとカラー ボタンで見つかった問題の部分的な再解釈であることにも注意してください。私はこの分野の専門家からは程遠いので、私が提案する解決策はあくまでも参考的なものにすぎません。 |
<<: TensorFlow 2 入門ガイド。初心者必見です!
>>: 面接の質問に必ず読むべき一冊! Python のトップ 5 ソート アルゴリズムとその実装コード
人工知能が盛んに使われる一方で、この技術に伴う問題や潜在的な脅威も現れつつあります。 AI技術の「価...
少し前に、スローン財団は2022年度スローン研究賞の受賞者を発表しました。Chen Danqi、Fa...
[[400946]]距離がチームワークを制限するべきではないメンテナンスの問題をより早く解決世界中の...
2016年以降、人工知能がニュースに登場する頻度が高まっています。実は、理工系女子の私にとって、子...
超AI制御により、機械が自動的に人間の胚のクローンを作成し、培養用の栄養プールに送り込み、人間のバッ...
[[379153]] [51CTO.com クイック翻訳] 研究によると、人工知能技術はさまざまな業...
CIO は非倫理的な AI の例を認識し、企業の AI が中立性を保つための自らの役割を理解する必要...
今年、「中国の声」の話題は音楽そのものの議論からは程遠いが、これは重要ではない。注目されているのは、...
[[211140]]人工知能は、まず知覚段階、次に認知段階の 2 つの段階に分かれています...
[[311856]]小売業における当社の中核的な経験は、近年ほとんど変わっていません。店舗(またはオ...
ほら、軽く引っ張るとバラが動きますよ。葉を左にドラッグすると、松の木も同じ方向に移動します。引っ張る...