🎯
arai60 概要・練習方法
新井康平氏が厳選したLeetCode60問。BigTech面接対策として一般社団法人ソフトウェアエンジニアリング協会が採用
arai60とは
新井康平(Kohei Arai)氏がLeetCodeの数千問から厳選した60問。「これら60問を30分以内にエラーなく実装できれば、コーディング面接対策は完了」 というベンチマークを提供する。
一般社団法人ソフトウェアエンジニアリング協会(SWE協会)がGoogleなどのBigTech就職対策教材として採用しており、Discordでの練習会・レビューセッションで使用されている。
- 公式問題リスト: https://1kohei1.com/leetcode/
- LeetCode リスト: https://leetcode.com/list/?selectedList=xt2qzsi5
練習方法(SWE協会推奨)
Step 1: 自力で解く
何も見ずに問題を解く。5〜10分考えてわからなければ答えを見る(粘りすぎない)。
Step 2: 洗練された解法を学ぶ
- 他の実装者のコード(GitHub・LeetCode Discussion)
- Pythonの標準ライブラリ公式ドキュメント(
collections,heapq,bisect等) - より良い計算量の解法を理解する
Step 3: 反復練習
10分以内にエラーなく実装できるまで反復する。3回連続で書けるようになることが目標。
問題カテゴリ一覧
| カテゴリ | 問題数 | ドキュメント |
|---|---|---|
| LinkedList(連結リスト) | 5問 | → LinkedList |
| Stack(スタック) | 4問 | → Stack |
| Heap / PriorityQueue(ヒープ) | 6問 | → Heap |
| HashMap(ハッシュマップ) | 6問 | → HashMap |
| Graph / BFS / DFS | 6問 | → BFS/DFS |
| Tree / BT / BST(木構造) | 11問 | → Tree |
| Sort(ソート) | 3問 | → Sort |
| Dynamic Programming(DP) | 9問 | → DP |
| Binary Search(二分探索) | 3問 | → Binary Search |
| Recursion(再帰) | 4問 | → Recursion |
| Sliding Window | 4問 | → Sliding Window |
| Two Pointers(二ポインタ) | 5問 | → Two Pointers |
| Greedy + Backtracking | 3問 | → Greedy |
よく使うPythonの標準ライブラリ
from collections import deque, defaultdict, Counter
import heapq
from bisect import bisect_left, bisect_right
| ライブラリ | 用途 | 計算量 |
|---|---|---|
collections.deque | BFS のキュー | O(1) append/popleft |
collections.defaultdict | グラフの隣接リスト、頻度カウント | O(1) アクセス |
collections.Counter | 文字列・配列の頻度カウント | O(n) 構築 |
heapq | ヒープ(最小ヒープ) | O(log n) push/pop |
bisect | ソート済み配列への二分探索挿入 | O(log n) |
面接での立ち回り方
- 問題を繰り返し言語化する — 「つまり〜〜をすればよい」と自分の言葉で確認
- 例を手で動かす — 小さな入力で期待する出力を確認してから実装
- 計算量を先に言う — 「時間O(n)、空間O(1)で解けます」と宣言してから実装
- エッジケースを明示する — 空配列・null・重複値などを事前に確認
- 1. 🎯arai60 概要・練習方法
- 2. 👉arai60 - Two Pointers(二ポインタ法)
- 3. 🪟arai60 - Sliding Window(スライディングウィンドウ)
- 4. 🔗arai60 - LinkedList(連結リスト)
- 5. 📚arai60 - Stack(スタック)
- 6. ⛰️arai60 - Heap / PriorityQueue(ヒープ・優先度付きキュー)
- 7. 🗺️arai60 - HashMap(ハッシュマップ)
- 8. 🕸️arai60 - BFS / DFS(グラフ探索)
- 9. 🌳arai60 - Tree / BT / BST(木構造・二分木・BST)
- 10. 🧩arai60 - Dynamic Programming(動的計画法)
- 11. 🔍arai60 - Binary Search(二分探索)
- 12. 🔄arai60 - Recursion(再帰)
- 13. 📊arai60 - Sort(ソートアルゴリズム)
- 14. 🎲arai60 - Greedy + Backtracking(貪欲法・バックトラッキング)
出典: https://1kohei1.com/leetcode/