アルゴリズムの練習がなぜ重要なのか?私が最初に問題を解き始めたときのように世間知らずにならないでください。時々アルゴリズムをいくつか解くのは楽しいと思っていましたが、練習にあまり時間をかけず、ただ問題を解くことだけに専念していました。時々、問題を不注意に解いてしまうこともありますが、なぜそうしたのか理解できません。私自身としては、結局のところ、一日中アルゴリズムを解くというのはちょっとオタクっぽくて、実際の日常の仕事環境では実用的ではなく、長期的に見てもあまり利益をもたらさないだろうと考えていました。 「アルゴリズムを解く方法を知っていると、就職活動で競争上の優位性が得られます」 しかし、プログラマーの場合、日々の業務で複雑な問題が発生するのが現実であり、大企業は求職者の問題解決能力や細部への注意力を収集するための標準化されたプロセスを見つけなければなりません。つまり、あまり知られていない企業でも同様の評価方法を使用する傾向があるため、アルゴリズムを解く方法を知っていると、就職活動中に競争上の優位性が得られることになります。 アルゴリズムをより一貫して解き始めてすぐに、練習したり、これらの問題を解決するための最も効果的な戦略を学んだり、面接に向けて精神的に準備したりするためのリソースがたくさんあることに気付きました。 (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 ソート アルゴリズムとその実装コード
Nvidia の GPU が世界を席巻しています。テクノロジー企業は、Nvidia のスーパーコンピ...
COVID-19 パンデミック、メンタルヘルス危機、医療費の高騰、人口の高齢化により、業界のリーダ...
[51CTO.comより引用] 2019年を振り返ると、今年は人工知能、モノのインターネット、クラ...
機械学習のメリット機械学習は多くの分野で驚異的な進歩を遂げてきました。応用分野の観点から見ると、機械...
シリコンバレーの大企業からのオファーは多くのプログラマーにとって依然として非常に魅力的であり、今年は...
[[163141]]先月、Facebook は 2015 年第 4 四半期の驚異的な財務結果を発表し...
工業情報化部科学技術庁は、感染予防・抑制に努め、感染拡大を阻止するために、「人工知能の力を十分に発揮...
長年にわたり、強力なパスワード、定期的なデータ バックアップ、多要素認証は、個人情報を安全に保つため...
[[436077]]この記事はAI新メディアQuantum Bit(公開アカウントID:QbitAI...
近年、拡散モデルはテキストから画像への生成において大きな成功を収め、画像生成品質の向上、推論パフォー...