皆さん、こんにちは。私の名前はGregです。私は2020年からウェブ開発に携わっています。数年前、私はLeetCodingへの旅を始めました。この間に、私はいくつかの重要な洞察を得ており、それらを皆さんと共有したいと思います!
LeetCodeがどのように輝くのか?
アルゴリズム的および抽象的な思考力を養い、競技プログラミングのための堅牢な基礎を築きます。ライブコーディング面接中や、非平凡的な問題を解く際に自信を与えます。複雑なデータ構造とその関係を心の中で視覚化し、事前に全体の解決策を計画し、漸近的複雑性を評価し、非常に高性能で最適化されたコードを書くことを訓練します
レートコードの足りないところは?
製品開発のタスクの大部分はフレームワークやAPIとの作業に回っており、深いDSA知識は日々の業務において直接的に応用される機会が少なくなります。LeetCodeは製品のマインドセット、システムアーキテクチャ、チームワーク、あるいは既存コードベースのメンテナンスの方法を教えてはくれません。主な要点は、LeetCodeはあなたを素晴らしいプログラマーにできるが、必ずしも素晴らしいソフトウェアエンジニアにできるわけではない。
基本的ギャップを特定し、それを閉じる
基本的なアルゴリズムやデータ構造を超えて、特定の問題を解決するには、数論、組み合わせ論、ビット操作、再帰、探索アルゴリズム、メモ化、動的プログラミング(DP)などを深く掘り下げる必要があります。
LeetCodeと実世界の開発
最も難しいLeetCodeの問題でさえ、周囲の文脈が完全に欠けており、完全に孤立しています。しかし、実際の開発タスクでは、既存のコードベースとビジネスの文脈が常に考慮すべきものであり、これはしばしば実際の複雑さが存在する場所です.
認知的な利点はプログラミングを超えています
何千もの問題に直面することで、あなたの脳はシステム的思考に適応し、実際の生活における課題に取り組む方法を変えます。パニックになる代わりに、自然と大きな問題を管理可能で解決可能なステップに分解します。かつて混沌としていた場所で、あなたはパターンを見つけるようになります。自然と、よりシンプルで効率的な解決策に傾き、無駄な努力を最小限に抑えます.
「ビート100%」のパフォーマンスを達成するために
適切なアルゴリズムを選ぶだけでは不十分で、プログラミング言語を深く理解し、その完全な可能性を活用する必要があります。同じ問題に対する複数の解決策は、時間と空間の複雑さが同じであっても、その下位実装によって実際の実行時間が大きく異なる場合があります。その結果、非常に言語最適化されたO(n2アルゴリズムは実践的には最適化されていないO(n)ソリューションを上回ることがあります
後でJavaScript/TypeScriptにおける実践的なマイクロ最適化について別の投稿を書くかもしれません
LeetCodeはIT侍の道です!












