Skip to content

Commit 835b63d

Browse files
committed
feat: Add metadata files for 12 backtracking and grid/string problems
- Add TOML metadata files for combination sum variants (39, 40, 216) - Add TOML metadata files for permutation variants (46, 47) - Add TOML metadata files for subset variants (78, 90) - Add TOML metadata files for combinations (77) - Add TOML metadata files for N-Queens II (52) - Add TOML metadata files for word search (79) - Add TOML metadata files for string segmentation problems (93, 131) - All files follow ONTOLOGY_DESIGN.md specification - Include solution-level metadata with relationships and variants
1 parent 68316f3 commit 835b63d

12 files changed

+674
-0
lines changed
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# Problem: Combination Sum
2+
# https://leetcode.com/problems/combination-sum/
3+
4+
# ===== Problem Info =====
5+
id = "0039"
6+
slug = "0039_combination_sum"
7+
title = "Combination Sum"
8+
leetcode_id = 39
9+
url = "https://leetcode.com/problems/combination-sum/"
10+
11+
# ===== LeetCode Official Metadata =====
12+
difficulty = "medium"
13+
topics = ["array", "backtracking"]
14+
companies = ["google", "amazon", "meta", "microsoft", "uber", "airbnb"]
15+
16+
# ===== Roadmaps =====
17+
roadmaps = ["neetcode_150", "blind_75"]
18+
19+
# ===== Ontology Tags (Problem Level) =====
20+
api_kernels = ["BacktrackingExploration"]
21+
patterns = ["backtracking_combination"]
22+
families = ["backtracking_combinatorial"]
23+
data_structures = ["array"]
24+
algorithms = ["backtracking"]
25+
related_problems = ["0040", "0077", "0216", "0078"]
26+
27+
# ===== File Locations =====
28+
[files]
29+
solution = "solutions/0039_combination_sum.py"
30+
generator = "generators/0039_combination_sum.py"
31+
tests_dir = "tests/0039_combination_sum/"
32+
33+
# ===== Solutions =====
34+
[[solutions]]
35+
key = "default"
36+
class = "Solution"
37+
method = "combinationSum"
38+
39+
api_kernels = ["BacktrackingExploration"]
40+
patterns = ["backtracking_combination"]
41+
families = ["backtracking_combinatorial"]
42+
data_structures = ["array"]
43+
algorithms = ["backtracking"]
44+
related_problems = ["0040", "0077"]
45+
46+
role = "base"
47+
variant = "target_search_with_reuse"
48+
based_on = []
49+
delta = ""
50+
complexity = "O(n^(t/m)) time, O(t/m) space"
51+
notes = "Backtracking with element reuse. Allow reuse by recursing with same index i (not i+1). Prune when candidate > remaining target."
52+
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# Problem: Combination Sum II
2+
# https://leetcode.com/problems/combination-sum-ii/
3+
4+
# ===== Problem Info =====
5+
id = "0040"
6+
slug = "0040_combination_sum_ii"
7+
title = "Combination Sum II"
8+
leetcode_id = 40
9+
url = "https://leetcode.com/problems/combination-sum-ii/"
10+
11+
# ===== LeetCode Official Metadata =====
12+
difficulty = "medium"
13+
topics = ["array", "backtracking"]
14+
companies = ["google", "amazon", "meta", "microsoft"]
15+
16+
# ===== Roadmaps =====
17+
roadmaps = ["neetcode_150"]
18+
19+
# ===== Ontology Tags (Problem Level) =====
20+
api_kernels = ["BacktrackingExploration"]
21+
patterns = ["backtracking_combination"]
22+
families = ["backtracking_combinatorial"]
23+
data_structures = ["array"]
24+
algorithms = ["backtracking"]
25+
related_problems = ["0039", "0090", "0047", "0216"]
26+
27+
# ===== File Locations =====
28+
[files]
29+
solution = "solutions/0040_combination_sum_ii.py"
30+
generator = "generators/0040_combination_sum_ii.py"
31+
tests_dir = "tests/0040_combination_sum_ii/"
32+
33+
# ===== Solutions =====
34+
[[solutions]]
35+
key = "default"
36+
class = "Solution"
37+
method = "combinationSum2"
38+
39+
api_kernels = ["BacktrackingExploration"]
40+
patterns = ["backtracking_combination"]
41+
families = ["backtracking_combinatorial"]
42+
data_structures = ["array"]
43+
algorithms = ["backtracking"]
44+
related_problems = ["0039", "0090"]
45+
46+
role = "variant"
47+
variant = "no_reuse_with_deduplication"
48+
based_on = ["0039#default"]
49+
delta = "No reuse: recurse with i+1. Handle duplicates: sort + same-level skip (i > start_index and candidates[i] == candidates[i-1])."
50+
complexity = "O(2^n) time, O(n) space"
51+
notes = "Combines no-reuse pattern with same-level deduplication for handling duplicate candidates."
52+
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
# Problem: Permutations
2+
# https://leetcode.com/problems/permutations/
3+
4+
# ===== Problem Info =====
5+
id = "0046"
6+
slug = "0046_permutations"
7+
title = "Permutations"
8+
leetcode_id = 46
9+
url = "https://leetcode.com/problems/permutations/"
10+
11+
# ===== LeetCode Official Metadata =====
12+
difficulty = "medium"
13+
topics = ["array", "backtracking"]
14+
companies = ["google", "amazon", "meta", "microsoft", "apple", "uber"]
15+
16+
# ===== Roadmaps =====
17+
roadmaps = ["neetcode_150"]
18+
19+
# ===== Ontology Tags (Problem Level) =====
20+
api_kernels = ["BacktrackingExploration"]
21+
patterns = ["backtracking_permutation"]
22+
families = ["backtracking_combinatorial"]
23+
data_structures = ["array"]
24+
algorithms = ["backtracking"]
25+
related_problems = ["0047", "0078", "0077"]
26+
27+
# ===== Pattern Role =====
28+
[pattern_role]
29+
is_base_template = true
30+
base_for_kernel = "BacktrackingExploration"
31+
derived_problems = ["0047"]
32+
33+
# ===== File Locations =====
34+
[files]
35+
solution = "solutions/0046_permutations.py"
36+
generator = "generators/0046_permutations.py"
37+
tests_dir = "tests/0046_permutations/"
38+
39+
# ===== Solutions =====
40+
[[solutions]]
41+
key = "default"
42+
class = "Solution"
43+
method = "permute"
44+
45+
api_kernels = ["BacktrackingExploration"]
46+
patterns = ["backtracking_permutation"]
47+
families = ["backtracking_combinatorial"]
48+
data_structures = ["array"]
49+
algorithms = ["backtracking"]
50+
related_problems = ["0047"]
51+
52+
role = "base"
53+
variant = ""
54+
based_on = []
55+
delta = ""
56+
complexity = "O(n! × n) time, O(n) space"
57+
notes = "BASE TEMPLATE for permutation enumeration. Track usage with boolean array. At each position, try every unused element. This is the canonical backtracking permutation pattern."
58+
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# Problem: Permutations II
2+
# https://leetcode.com/problems/permutations-ii/
3+
4+
# ===== Problem Info =====
5+
id = "0047"
6+
slug = "0047_permutations_ii"
7+
title = "Permutations II"
8+
leetcode_id = 47
9+
url = "https://leetcode.com/problems/permutations-ii/"
10+
11+
# ===== LeetCode Official Metadata =====
12+
difficulty = "medium"
13+
topics = ["array", "backtracking"]
14+
companies = ["google", "amazon", "meta", "microsoft"]
15+
16+
# ===== Roadmaps =====
17+
roadmaps = []
18+
19+
# ===== Ontology Tags (Problem Level) =====
20+
api_kernels = ["BacktrackingExploration"]
21+
patterns = ["backtracking_permutation"]
22+
families = ["backtracking_combinatorial"]
23+
data_structures = ["array"]
24+
algorithms = ["backtracking"]
25+
related_problems = ["0046", "0040", "0090"]
26+
27+
# ===== File Locations =====
28+
[files]
29+
solution = "solutions/0047_permutations_ii.py"
30+
generator = "generators/0047_permutations_ii.py"
31+
tests_dir = "tests/0047_permutations_ii/"
32+
33+
# ===== Solutions =====
34+
[[solutions]]
35+
key = "default"
36+
class = "Solution"
37+
method = "permuteUnique"
38+
39+
api_kernels = ["BacktrackingExploration"]
40+
patterns = ["backtracking_permutation"]
41+
families = ["backtracking_combinatorial"]
42+
data_structures = ["array"]
43+
algorithms = ["backtracking"]
44+
related_problems = ["0046"]
45+
46+
role = "variant"
47+
variant = "with_duplicates"
48+
based_on = ["0046#default"]
49+
delta = "Sort array + same-level deduplication: skip nums[i] if i > 0 and nums[i] == nums[i-1] and !used[i-1]. Ensures leftmost duplicate is always picked first at each level."
50+
complexity = "O(n! × n) time, O(n) space"
51+
notes = "Extension of base permutation pattern with duplicate handling using same-level deduplication."
52+
Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
# Problem: N-Queens II
2+
# https://leetcode.com/problems/n-queens-ii/
3+
4+
# ===== Problem Info =====
5+
id = "0052"
6+
slug = "0052_n_queens_ii"
7+
title = "N-Queens II"
8+
leetcode_id = 52
9+
url = "https://leetcode.com/problems/n-queens-ii/"
10+
11+
# ===== LeetCode Official Metadata =====
12+
difficulty = "hard"
13+
topics = ["backtracking"]
14+
companies = ["google", "amazon", "meta"]
15+
16+
# ===== Roadmaps =====
17+
roadmaps = []
18+
19+
# ===== Ontology Tags (Problem Level) =====
20+
api_kernels = ["BacktrackingExploration"]
21+
patterns = ["backtracking_n_queens"]
22+
families = ["backtracking_combinatorial"]
23+
data_structures = ["array", "hash_set"]
24+
algorithms = ["backtracking"]
25+
related_problems = ["0051"]
26+
27+
# ===== File Locations =====
28+
[files]
29+
solution = "solutions/0052_n_queens_ii.py"
30+
generator = "generators/0052_n_queens_ii.py"
31+
tests_dir = "tests/0052_n_queens_ii/"
32+
33+
# ===== Solutions =====
34+
[[solutions]]
35+
key = "default"
36+
class = "SolutionSets"
37+
method = "totalNQueens"
38+
39+
api_kernels = ["BacktrackingExploration"]
40+
patterns = ["backtracking_n_queens"]
41+
families = ["backtracking_combinatorial"]
42+
data_structures = ["array", "hash_set"]
43+
algorithms = ["backtracking"]
44+
related_problems = ["0051"]
45+
46+
role = "variant"
47+
variant = "count_only"
48+
based_on = ["0051#default"]
49+
delta = "Only count solutions instead of building board representations. More memory efficient."
50+
complexity = "O(n!) time, O(n) space"
51+
notes = "Same algorithm as N-Queens but optimized for counting. Uses hash sets for O(1) constraint checking."
52+
53+
[[solutions]]
54+
key = "bitmask"
55+
class = "SolutionBitmask"
56+
method = "totalNQueens"
57+
58+
api_kernels = ["BacktrackingExploration"]
59+
patterns = ["backtracking_n_queens"]
60+
families = ["backtracking_combinatorial"]
61+
data_structures = ["array"]
62+
algorithms = ["backtracking"]
63+
related_problems = ["0051"]
64+
65+
role = "variant"
66+
variant = "bitmask_optimization"
67+
based_on = ["0052#default"]
68+
delta = "Use integers as bitmasks for ultra-fast constraint checking. Bitwise operations are faster than hash lookups."
69+
complexity = "O(n!) time, O(n) space"
70+
notes = "Optimized version using bitmasks for constraint tracking. Better cache locality and smaller constants."
71+
Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
# Problem: Combinations
2+
# https://leetcode.com/problems/combinations/
3+
4+
# ===== Problem Info =====
5+
id = "0077"
6+
slug = "0077_combinations"
7+
title = "Combinations"
8+
leetcode_id = 77
9+
url = "https://leetcode.com/problems/combinations/"
10+
11+
# ===== LeetCode Official Metadata =====
12+
difficulty = "medium"
13+
topics = ["backtracking"]
14+
companies = ["google", "amazon", "meta"]
15+
16+
# ===== Roadmaps =====
17+
roadmaps = []
18+
19+
# ===== Ontology Tags (Problem Level) =====
20+
api_kernels = ["BacktrackingExploration"]
21+
patterns = ["backtracking_combination"]
22+
families = ["backtracking_combinatorial"]
23+
data_structures = ["array"]
24+
algorithms = ["backtracking"]
25+
related_problems = ["0078", "0039", "0216"]
26+
27+
# ===== File Locations =====
28+
[files]
29+
solution = "solutions/0077_combinations.py"
30+
generator = "generators/0077_combinations.py"
31+
tests_dir = "tests/0077_combinations/"
32+
33+
# ===== Solutions =====
34+
[[solutions]]
35+
key = "default"
36+
class = "Solution"
37+
method = "combine"
38+
39+
api_kernels = ["BacktrackingExploration"]
40+
patterns = ["backtracking_combination"]
41+
families = ["backtracking_combinatorial"]
42+
data_structures = ["array"]
43+
algorithms = ["backtracking"]
44+
related_problems = ["0078", "0039"]
45+
46+
role = "variant"
47+
variant = "fixed_size_subset"
48+
based_on = ["0078#default"]
49+
delta = "Fixed-size subset enumeration. Only collect when path length equals k. Add count-based pruning: stop early if not enough elements remain."
50+
complexity = "O(k × C(n,k)) time, O(k) space"
51+
notes = "Similar to subsets but with fixed size constraint. Uses start_index for canonical ordering and pruning optimization."
52+

0 commit comments

Comments
 (0)