Each subpattern solves a specific type of problem. Click on a card to view its template.
Template for: Subsets / Power Set
Record the current partial subset at every call — not just at leaves. The empty set is always a valid subset.
Loop from 'start' to end of the array. Passing 'start' avoids choosing the same element twice and prevents duplicate subsets.
Push the element, recurse with start = i+1, then pop the element. This is the canonical backtrack undo.
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}
Sharpen your skills with hand-picked problems.
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