Each subpattern solves a specific type of problem. Click on a card to view its template.
At each index, decide include or exclude — 2^N total subsets.
Choose exactly k elements — prune branches that can't reach k early.
Every ordering of elements — use a 'used' array to track which elements are in the current path.
DFS on a 2D grid — mark cells visited in-place, restore on backtrack.
Place items row by row — use sets to check column and diagonal conflicts in O(1).
Partition a string at every valid cut — prune immediately when the prefix is invalid.
Template for: Subsets / Power Set
1// Subsets — include/exclude at every index2vector<vector<int>> result;3vector<int> current;45void backtrack(vector<int>& nums, int start)6{7 result.push_back(current); // record subset at every node89 for (int i = start; i < (int)nums.size(); i++)10 {11 current.push_back(nums[i]); // choose12 backtrack(nums, i + 1); // explore (no reuse)13 current.pop_back(); // un-choose14 }15}1617vector<vector<int>> subsets(vector<int>& nums)18{19 backtrack(nums, 0);20 return result;21}
LeetCode #78
LeetCode #90
LeetCode #784
LeetCode #
LeetCode #77
LeetCode #39
LeetCode #40
LeetCode #216
LeetCode #254
LeetCode #46
LeetCode #47
LeetCode #60
LeetCode #526
LeetCode #79
LeetCode #212
LeetCode #980
LeetCode #37
LeetCode #51
LeetCode #52
LeetCode #679
LeetCode #131
LeetCode #93
LeetCode #22
LeetCode #140
LeetCode #132