Google PlayストアでUnionpediaアプリを復元するために作業中です
出ていきます入ってきます
🌟ナビゲーションを改善するためにデザインを簡素化しました!
Instagram Facebook X LinkedIn
あなたのロゴとドメインを持つ独自のユニオンペディア、月額9.99 USDから
私のユニオンペディアを作成する

LeetCode

索引 LeetCode

LeetCodeは、コーディング面接準備のためのオンラインプラットフォームである。求職者やコーディング愛好家の間で人気を博している。

目次

  1. 20 関係: 幅優先探索二分探索バックトラッキングヒープデータベースアルゴリズムキュー (コンピュータ)グラフ (離散数学)スライディングウィンドウスタック動的計画法非公開会社計算複雑性理論貪欲法配列連結リスト深さ優先探索木構造 (データ構造)文字列数学

幅優先探索

ドイツの都市間の接続を示した例 フランクフルトから幅優先検索を行った場合にできる木構造 幅優先探索(はばゆうせんたんさく、breadth first search)はグラフ理論(Graph theory)において木構造(tree structure)やグラフ(graph)の探索に用いられるアルゴリズム。アルゴリズムは根ノードで始まり隣接した全てのノードを探索する。それからこれらの最も近いノードのそれぞれに対して同様のことを繰り返して探索対象ノードをみつける。「横型探索」とも言われる。 幅優先探索は解を探すために、グラフの全てのノードを網羅的に展開・検査する。最良優先探索とは異なり、ノード探索にヒューリスティクスを使わずに、グラフ全体を目的のノードがみつかるまで、目的のノードに接近しているかどうかなどは考慮せず探索する。

見る LeetCodeと幅優先探索

二分探索

二分探索(にぶんたんさく、binary search、BS)やバイナリサーチとは、ソート済み配列に対する探索アルゴリズムの一つ。

見る LeetCodeと二分探索

バックトラッキング

バックトラッキング (backtracking)は、制約充足問題の解を探索する戦略の一種で、力まかせ探索を改良したもの。「バックトラック」という用語は、アメリカの数学者が1950年代に作った造語である。

見る LeetCodeとバックトラッキング

ヒープ

ヒープ(heap)とは、「子要素は親要素より常に大きいか等しい(または常に小さいか等しい)」という制約を持つ木構造の事。単に「ヒープ」という場合、二分木を使った二分ヒープを指すことが多いため、そちらを参照すること。 二分ヒープのインデックス付け。

見る LeetCodeとヒープ

データベース

コンピューティングにおいて、データベース()は、電子的に保存され、アクセスできる組織化されたデータの集合である。実メモリに保存されるもの、CSVなどのファイルに保管される物、OSのファイルシステムなどから、後述のデータベース管理システムを使った大規模なものまである。 小規模なデータベースはOSのファイルシステム上にファイルとして保存されるが、大規模なデータベースはOSに依存しない低レベルなフォーマットで外部記憶装置に保存される。またコンピュータ・クラスターまたはクラウドストレージで保存される。データベース設計に関わる分野は多岐にわたり、データモデリング、効率的なデータ表現と保存、クエリ言語、機密データのやプライバシー、同時アクセスとフォールトトレランスのサポートを含む分散コンピューティングの課題など、形式技術と実用的な考慮事項に及ぶ。

見る LeetCodeとデータベース

アルゴリズム

アルゴリズム(algorithm)とは、解が定まっている「計算可能」問題に対して、その解を正しく求める手続きをさす解が存在しない問題に対しては、それを正しく判定できなければならない。。あるいはそれを形式的に表現したもの。 実用上は、アルゴリズムの実行に要する記憶領域の大きさや完了までに要する時間(空間計算量と時間計算量)が小さいこと、特に問題の規模を大きくした際に必要な記憶領域や計算量が急激に大きくならないことが重要となる。 アルゴリズムの実行は形態によらない。コンピュータプログラムはコンピュータ上に実装されたアルゴリズムの例である。

見る LeetCodeとアルゴリズム

キュー (コンピュータ)

キュー(queue)あるいは待ち行列は、コンピュータにおける基本的なデータ構造の一つ。データを先入れ先出しのリスト構造で保持するものである。キューからデータを取り出すときには、先に入れられたデータから順に取り出される。キューにデータを入れることをエンキュー、取り出すことをデキューという。 プリンターへの出力処理や、ウィンドウシステムにおけるイベントあるいはメッセージのハンドリング、プロセスの管理など、データを入力された順番通りに処理する必要があるケースに用いられる。また、個々のタスクの実行時間が予測できない、あるいは実行に時間がかかってしまい、即座に(同期的に)実行することができない場合、キューを使っていったんタスクを溜め込んでおき、後からタスクを取り出して非同期で実行する、というような目的で使用できる。

見る LeetCodeとキュー (コンピュータ)

グラフ (離散数学)

頂点6つと辺7つから成るグラフの例 数学のグラフ理論におけるグラフ(英: graph)とは数学的構造の一つ。対象の集合で、対象の一部が相互に何らかの脈絡で「関係している」ようなものをいう。ここで対象とは頂点(節点やノードとも)と呼ばれる抽象物であり、互いに関係のある頂点の対は辺(枝やエッジとも)と呼ばれる。一般的に、グラフは点または丸で表した頂点の集合に直線または曲線で辺を描き加えたダイアグラムで表現される。グラフは離散数学の研究対象の一つである。 辺には無向と有向の場合がある。例えば頂点をパーティ参加者として、2人が握手するとその間に辺が結ばれるとする場合、握手はお互い対等で行うものなので無向な辺といえる。対照的に、お金の貸し借り関係を辺とした場合、どちらか一方にのみ返済義務があるので有向な辺といえる。前者をグラフにしたものは無向グラフ (undirected graph) と呼ばれ、後者のグラフは有向グラフ (directed graph) と呼ばれる。

見る LeetCodeとグラフ (離散数学)

スライディングウィンドウ

スライディングウィンドウは、通信の高速化を図ったフロー制御の一つである。ウィンドウと呼ばれる概念を設け、そのウィンドウに空きがある限り、受信側からの応答を待たずに送信側が送信を行うというものである。 この用語がTCPにおけるフロー制御のみを指すかのような説明が行われることがあるが、以下に示すように、この用語の適用範囲は必ずしもTCPにおけるフロー制御のみに限定されるものではない。

見る LeetCodeとスライディングウィンドウ

スタック

スタック()は、コンピュータで用いられる基本的なデータ構造の1つで、データを後入れ先出し(LIFO: Last In First Out; FILO: First In Last Out)の構造で保持するものである。抽象データ型としてのそれを指すこともあれば、その具象を指すこともある。 特にその具象としては、割込みやサブルーチンを支援するために極めて有用であることから、1970年代以降に新しく設計された、ある規模以上のコンピュータは、スタックポインタによるコールスタックをメモリ上に持っていることが多い。

見る LeetCodeとスタック

動的計画法

動的計画法(どうてきけいかくほう、Dynamic Programming, DP)は、計算機科学の分野において、アルゴリズムの分類の1つである。対象となる問題を複数の部分問題に分割し、部分問題の計算結果の記録を利用して全体の問題を解く手法を総称してこう呼ぶ。

見る LeetCodeと動的計画法

非公開会社

非公開会社(ひこうかいかいしゃ)とは、公開会社ではない会社。閉鎖会社と呼ばれることもある。 社員の持分(株式)を取引することのできる市場が存在しない会社を指す。非公開会社の「非公開」とは持分が非公開であることを指し、多くの非公開会社の存在自体は公にされている。 日本の会社法では定款で全部の株式について譲渡制限が設けることで非公開会社を作ることができ、法文上は公開会社でない株式会社と表現される。また、イギリスの2006年会社法では非公開株式会社のほか、類似の会社形態として非公開保証有限会社がある。アメリカでは州法に株主数等による閉鎖会社close corporationの定義がある場合があるため、州によっては公開会社にも非公開会社にも当たらない中間的な会社が多数存在する。

見る LeetCodeと非公開会社

計算複雑性理論

計算複雑性理論(けいさんふくざつせいりろん、)とは、計算機科学における計算理論の一分野であり、アルゴリズムのスケーラビリティや、特定の計算問題の解法の複雑性(計算問題の困難さ)などを数学的に扱う。計算量理論、計算の複雑さの理論、計算複雑度の理論ともいう。

見る LeetCodeと計算複雑性理論

貪欲法

貪欲法(どんよくほう、greedy algorithm)は、アルゴリズムの一種、欲張り法(よくばりほう)、グリーディ算法(グリーディさんぽう)ともいう。

見る LeetCodeと貪欲法

配列

この記事では、コンピュータ・プログラムにおいて配列(はいれつ、array)と呼ばれているデータ構造およびデータ型について説明する。計算科学方面ではベクトルという場合もある。また、リストも参照。一般に、添え字で個々の要素を区別する。

見る LeetCodeと配列

連結リスト

は、最も基本的なデータ構造の1つであり、他のデータ構造の実装に使われる。リンクリスト、リンクトリストとも表記される。 一連のノードが、任意のデータフィールド群を持ち、1つか2つの参照(リンク)により次(および前)のノードを指している。連結リストの主な利点は、リスト上のノードを様々な順番で検索可能な点である。連結リストは自己参照型のデータ型であり、同じデータ型の別のノードへのリンク(またはポインタ)を含んでいる。連結リストは場所が分かっていれば、ノードの挿入や削除を定数時間で行うことができる(場所を探すのにかかる時間はリスト上の順番の条件などにも依存するし、後述する片方向リストなのか双方向リストなのかにも依存する)。連結リストにはいくつかの種類があり、片方向リスト、双方向リスト、線形リスト、循環リストなどがある。

見る LeetCodeと連結リスト

深さ優先探索

深さ優先探索のイメージ 深さ優先探索(ふかさゆうせんたんさく、depth-first search, DFS、バックトラック法ともいう)は、木やグラフを探索するためのアルゴリズムである。アルゴリズムは根から(グラフの場合はどのノードを根にするか決定する)始まり、バックトラックするまで可能な限り探索を行う。「縦型探索」とも呼ばれる。

見る LeetCodeと深さ優先探索

木構造 (データ構造)

親子構造 木構造(きこうぞう)とは、グラフ理論における木に対応づけられるデータ構造である。

見る LeetCodeと木構造 (データ構造)

文字列

文字列(もじれつ)は、単語や文章のような、文字の連なったもの。ストリング (string)、テキスト (text) という場合もある。コンピュータ、特にプログラミングの分野で用いることが多い。

見る LeetCodeと文字列

数学

数学(すうがく)とは、数・量・図形などに関する学問であり、理学の一種。「算術・代数学・幾何学・解析学・微分法・積分法などの総称」とされる。 数学は自然科学の一種にも、自然科学ではない「形式科学」の一種にも分類され得る。

見る LeetCodeと数学