単方向連結リストの基礎操作:要素削除・構造設計・反転アルゴリズム
特定値ノードの安全な削除(LeetCode 203)
連結リストから指定した整数と一致するノードを除去する処理では、先頭ノードと中間以降のノードで削除ロジックが異なる点に注意が必要です。先頭を削除する場合は参照そのものを更新する必要がありますが、中間ノードの削除は直前のノードの next ポインタを書き換えるだけで済みます。これらを無理に単一のループで統合しよう ...
6月10日 22:42 投稿
配列と連結リストの基本アルゴリズムと実装例
配列の二分探索
昇順に整列された重複のない配列から要素を検索する際、二分探索は効率的な手法です。左閉右閉区間と左閉右開区間の2つのアプローチを解説します。
左閉右閉区間アプローチ
class Solution {
public:
int binarySearch(const vector<int>& arr, int target) {
int low = 0;
int high = arr.size() - 1;
while (low tar ...
5月28日 21:40 投稿
二つのソート済み単方向リストのマージアルゴリズム
二つの非減少順(昇順)に整列された単方向連結リストを、一つの新たなソート済みリストに統合する問題。統合後のリストは、元の二つのリストに含まれるすべてのノードを再利用して構成され、追加のメモリ割り当ては不要である。
核心的なアプローチは以下の通り:
- **ダミーノード**(仮想ヘッド)を導入し、新規リストの先頭を一貫して扱えるようにする
- 結果リス ...
5月14日 23:26 投稿