🔥
アルゴリズム図鑑 ~ Data structure in JavaScript
- Linked list
function ListNode(val, next) {
this.val = (val === undefined ? 0 : val);
this.next = (next === undefined ? null : next);
}
- 配列
- スタック
- キュー
- ハッシュテーブル
const map = new Map();
// 値をセット
map.set('a', 1);
// 値を取得
console.log(map.get('a')); // 1
- ヒープ
#include <queue>
#include <vector>
#include <iostream>
int main() {
std::priority_queue<int> maxHeap;
maxHeap.push(10);
maxHeap.push(5);
maxHeap.push(20);
std::cout << maxHeap.top() << std::endl; // 20(最大値)
maxHeap.pop(); // 20を削除
std::cout << maxHeap.top() << std::endl; // 10
}
- 二分探索木
set.cpp
#include <set>
#include <iostream>
int main() {
std::set<int> bst;
bst.insert(10);
bst.insert(5);
bst.insert(20);
for (int val : bst) {
std::cout << val << " "; // 5 10 20
}
bst.erase(10);
std::cout << "\nContains 10? " << (bst.count(10) ? "Yes" : "No") << std::endl;
}
map.cpp
#include <map>
#include <iostream>
int main() {
std::map<std::string, int> bst;
bst["apple"] = 5;
bst["banana"] = 2;
bst["cherry"] = 9;
for (auto [k, v] : bst) {
std::cout << k << ": " << v << std::endl;
}
bst.erase("banana");
}
Discussion