アルゴリズムの練習がなぜ重要なのか?私が最初に問題を解き始めたときのように世間知らずにならないでください。時々アルゴリズムをいくつか解くのは楽しいと思っていましたが、練習にあまり時間をかけず、ただ問題を解くことだけに専念していました。時々、問題を不注意に解いてしまうこともありますが、なぜそうしたのか理解できません。私自身としては、結局のところ、一日中アルゴリズムを解くというのはちょっとオタクっぽくて、実際の日常の仕事環境では実用的ではなく、長期的に見てもあまり利益をもたらさないだろうと考えていました。 「アルゴリズムを解く方法を知っていると、就職活動で競争上の優位性が得られます」 しかし、プログラマーの場合、日々の業務で複雑な問題が発生するのが現実であり、大企業は求職者の問題解決能力や細部への注意力を収集するための標準化されたプロセスを見つけなければなりません。つまり、あまり知られていない企業でも同様の評価方法を使用する傾向があるため、アルゴリズムを解く方法を知っていると、就職活動中に競争上の優位性が得られることになります。 アルゴリズムをより一貫して解き始めてすぐに、練習したり、これらの問題を解決するための最も効果的な戦略を学んだり、面接に向けて精神的に準備したりするためのリソースがたくさんあることに気付きました。 (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 ソート アルゴリズムとその実装コード
最後に、Google が昨年 12 月に約束した Gemini Ultra はリリースされるのでしょ...
アメリカン・エキスプレスは長年にわたり、人工知能と認知技術のリーダーとして活躍してきました。大規模で...
[[380706]]この記事はWeChatパブリックアカウント「Full-Stack Cultiva...
何か大きなことが起こりました!数か月前、マイクロソフトの AI 研究チームは、大量のオープンソースの...
現地時間8月26日、マスク氏は自らオンラインにアクセスし、FSD Beta V12の試乗ライブ放送を...
Llama2 はオープンソースであり、無料の商用利用をサポートしているため、オープンソースの大規模...
PaddleOCR は、PaddlePaddle ディープラーニング フレームワークに基づいて開発さ...
[[433430]] Facebook が名前を Meta に変更し、Metaverse への本格的...
人工知能業界では、今年多くの出来事がありましたが、その中には慎重に検討する価値のあるものもありました...
サイバーセキュリティにおける人工知能をめぐる誇大宣伝は、多くの専門家の間で不満を引き起こしています。...
[[390934]] AI と機械学習の最近の研究では、一般的な学習と、ますます大規模なトレーニング...
最近、清華大学ビッグデータ研究センターの機械学習研究部門は、効率的で簡潔な転移学習アルゴリズムライブ...