今年の 9 月、私は自らに課した 30 日間のコード チャレンジに着手しました。これは、毎日少なくとも 2 つのデータ構造とアルゴリズム (DSA) の問題を解決するという取り組みです。私の目標は、自分自身を快適ゾーンから押し出し、一貫性を築き、問題解決スキルとプログラミング ロジックを向上させることでした。
私は 1 つのプラットフォームだけに固執したわけではありません。HackerRank の 30 日間のコード チャレンジ、LeetCode の 30 日間の JavaScript プランを完了し、また、LeetCode の Top Interview 150 トラック (面接の準備をしている人向けの 150 の典型的な面接の問題を集めたもの) にも取り組みました。コーディングインタビュー。さらに、DSA の概念の理解をさらに強化するために、Structy に関するレッスンをいくつか受講しました。
私は JavaScript を使用してほとんどの問題を解決しました (JavaScript がサポートされていなかったため、代わりに Python を使用したいくつかの HackerRank 問題を除いて)。自分自身に責任を持たせるため、また自分の進捗状況を共有するために、毎日解決した課題を Twitter に投稿しました。それらは次の引用履歴で見つけることができます:
データ型、基本から高度まで
私は毎日、さまざまな種類のデータ構造とアルゴリズムに触れました。
- の扱い方を学びました
- 配列
- 文字列
- オブジェクト
- 地図
- セット
- 数字
- ブール値など。
一部の問題には、リンク リストやバイナリ ツリーなどのより複雑な構造が含まれていましたが、他の問題には行列や n 次元配列が混入しており、多次元空間を扱うことができました。
問題の多様性に私は目が離せませんでした。 LeetCode の 30 日間の JavaScript トラックの問題は、
- のような基礎を教えてくれました。
- 配列変換
- 関数変換
- 閉店
- クラス
- JSON
- 約束と時間。
LeetCode の Top Interview 150 トラックはさらに一歩進んで、さまざまな難易度やアプローチの問題の間で私を翻弄しました。毎日これらのうち少なくとも 1 つを解決することは非常に貴重でした。また、これらの問題により、最適化について、また、さまざまなアプローチが実行時間とメモリ効率にどのように大きな影響を与える可能性があるかについて、より頻繁に考えるようになりました。
私はこれらの課題と並行して Structy のレッスンも受講し、主要な概念の理解を強化しました。リンク リストやバイナリ ツリーのセクションなど、一部のデータ構造を処理するより効率的な方法を学びました。私は特に、理解しやすい方法で問題を教え、分解するというプラットフォームのダイナミックなアプローチを高く評価するようになりました。これは、DSA を非常に基本的なレベルで学習し、この理解を私が直面する他のコーディングの問題に応用するのに最適なプラットフォームです。
アプローチとテクニック
日が経つにつれて、私はさまざまな種類の解決策のアプローチ、次のような問題解決手法に出会いました。
- 再帰
- ツーポインタ
- ハッシュマップ
- ハッシュテーブル
- 貪欲なアルゴリズム
- 二分探索
- 引き違い窓
- 動的プログラミング
- キャッシュ (メモ化) など。
2 ポインタ アプローチは、より効率的な解決策を得るために検索スペースを削減することで、シーケンス (主に配列と文字列) に関連する問題を解決するための単純かつ強力な方法であることがわかりました。また、各ステップで局所的に最適な選択を行う必要がある貪欲なアルゴリズムも使用しました。
スライディング ウィンドウ手法もまた目を見張るものでした。最初は難しかったですが、部分配列や部分文字列が関係する問題には価値がありました。シーケンス内の要素の移動範囲を追跡する必要がある問題。ハッシュマップとハッシュテーブルは、頻繁な検索を伴う問題のキーと値のペアに最適です。
私が取り組んだ最も複雑なテクニックの 1 つは動的プログラミングでした。初期の頃、重複する部分問題を認識するのが難しいため、DP は非常に恐ろしいものだと感じましたが、繰り返し使用するうちに、メモ化は再帰呼び出しの最適化において私の親友になりました。
関数操作 (feat. ラッパーとプロトタイプ)
DSA の中核的な問題に加えて、より高度な JavaScript の概念を試す機会も得られました。コードのフローを制御し、特定の要件に合わせて機能を拡張する方法を学びながら、ラッパー関数を作成しました。関数にタイマーを設定する方法も学びました。これにより、時間に敏感な操作を処理したり、特定の関数の実行頻度を制限したりすることができます。
プロトタイプを使って作業すると、カスタム メソッドを作成することで、データ型が組み込みの機能を超えて操作できることがわかりました。これにより、オブジェクトや配列などのデータ型の組み込み機能を新しい方法で拡張できるようになりました。クリーンでモジュール化されたコードを書くことの重要性を理解するようになりました。<script> // Detect dark theme var iframe = document.getElementById('tweet-1840720685099864068-290'); if (document.body.className.includes('dark-theme')) { iframe.src = "https://platform.twitter.com/embed/Tweet.html?id=1840720685099864068&theme=dark" } </script>
我還學習了記憶化,這是一種修改函數以儲存先前呼叫的參數及其結果的技術!這是一種緩存,有助於提高多次調用相同函數的問題的效能。我在這裡寫了關於我的 Memoize 解決方案擊敗 99%(內存)的文章:Memoize 直觀解決方案擊敗 99% 內存。
測試與優化
在這段旅程中我開始更加關注的另一件事是我的程式碼的最佳化。在正確介紹了 Structy 上的大 O 表示法之後,我了解時間和空間複雜性的重要性,並學會了解決最常見問題的最佳技術。在 HackerRank 挑戰賽接近尾聲時,我還學會了使用類別測試程式碼並編寫泛型。
外賣
當我完成 30 天程式設計挑戰時,我感受到了深刻的成長感。它提高了我處理各種問題的能力,加深了我對 JavaScript 和 DSA 的理解。這一個月的旅程不只是解決問題,還提醒自己,我真的可以付出努力。看到一致性和紀律的回報,我的心態得到了更新,可以充滿信心和強大的技術工具包來應對任何挑戰。
這次經歷標誌著我程式設計之旅的一個重要里程碑。我在這 30 天裡磨練的技能無疑將延續到我作為軟體工程師的職業生涯。
我為自己付出的努力感到自豪,也感謝在整個挑戰過程中為我加油、提供支持和智慧的朋友們。
以上が#aysofCode 9 月: DSA マスタリーへの私の旅の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

PythonとJavaScriptの主な違いは、タイプシステムとアプリケーションシナリオです。 1。Pythonは、科学的コンピューティングとデータ分析に適した動的タイプを使用します。 2。JavaScriptは弱いタイプを採用し、フロントエンドとフルスタックの開発で広く使用されています。この2つは、非同期プログラミングとパフォーマンスの最適化に独自の利点があり、選択する際にプロジェクトの要件に従って決定する必要があります。

PythonまたはJavaScriptを選択するかどうかは、プロジェクトの種類によって異なります。1)データサイエンスおよび自動化タスクのPythonを選択します。 2)フロントエンドとフルスタック開発のためにJavaScriptを選択します。 Pythonは、データ処理と自動化における強力なライブラリに好まれていますが、JavaScriptはWebインタラクションとフルスタック開発の利点に不可欠です。

PythonとJavaScriptにはそれぞれ独自の利点があり、選択はプロジェクトのニーズと個人的な好みに依存します。 1. Pythonは、データサイエンスやバックエンド開発に適した簡潔な構文を備えた学習が簡単ですが、実行速度が遅くなっています。 2。JavaScriptはフロントエンド開発のいたるところにあり、強力な非同期プログラミング機能を備えています。 node.jsはフルスタックの開発に適していますが、構文は複雑でエラーが発生しやすい場合があります。

javascriptisnotbuiltoncorc;それは、解釈されていることを解釈しました。

JavaScriptは、フロントエンドおよびバックエンド開発に使用できます。フロントエンドは、DOM操作を介してユーザーエクスペリエンスを強化し、バックエンドはnode.jsを介してサーバータスクを処理することを処理します。 1.フロントエンドの例:Webページテキストのコンテンツを変更します。 2。バックエンドの例:node.jsサーバーを作成します。

PythonまたはJavaScriptの選択は、キャリア開発、学習曲線、エコシステムに基づいている必要があります。1)キャリア開発:Pythonはデータサイエンスとバックエンド開発に適していますが、JavaScriptはフロントエンドおよびフルスタック開発に適しています。 2)学習曲線:Python構文は簡潔で初心者に適しています。 JavaScriptの構文は柔軟です。 3)エコシステム:Pythonには豊富な科学コンピューティングライブラリがあり、JavaScriptには強力なフロントエンドフレームワークがあります。

JavaScriptフレームワークのパワーは、開発を簡素化し、ユーザーエクスペリエンスとアプリケーションのパフォーマンスを向上させることにあります。フレームワークを選択するときは、次のことを検討してください。1。プロジェクトのサイズと複雑さ、2。チームエクスペリエンス、3。エコシステムとコミュニティサポート。

はじめに私はあなたがそれを奇妙に思うかもしれないことを知っています、JavaScript、C、およびブラウザは正確に何をしなければなりませんか?彼らは無関係であるように見えますが、実際、彼らは現代のウェブ開発において非常に重要な役割を果たしています。今日は、これら3つの間の密接なつながりについて説明します。この記事を通して、JavaScriptがブラウザでどのように実行されるか、ブラウザエンジンでのCの役割、およびそれらが協力してWebページのレンダリングと相互作用を駆動する方法を学びます。私たちは皆、JavaScriptとブラウザの関係を知っています。 JavaScriptは、フロントエンド開発のコア言語です。ブラウザで直接実行され、Webページが鮮明で興味深いものになります。なぜJavascrを疑問に思ったことがありますか


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

Video Face Swap
完全無料の AI 顔交換ツールを使用して、あらゆるビデオの顔を簡単に交換できます。

人気の記事

ホットツール

ドリームウィーバー CS6
ビジュアル Web 開発ツール

VSCode Windows 64 ビットのダウンロード
Microsoft によって発売された無料で強力な IDE エディター

SublimeText3 Linux 新バージョン
SublimeText3 Linux 最新バージョン

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

Safe Exam Browser
Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。
