Basics
- 注意输入本身有没有duplicates.
- 用 prev 记录位置 in for loop
- 放回抽样 dfs(... i)
- 不放回抽样 dfs(... i+1)
- for loop 起始 根据搜索树展开
- e.g. permutation: i = 0 -> array length
- e.g. subsets: i = prev -> array length
- O(number of solutions * complexity for each solution)
Problems
Permutations: http://www.lintcode.com/en/problem/permutations/#
Permutations ii: http://www.lintcode.com/en/problem/permutations-ii/
Combination: http://www.lintcode.com/en/problem/combinations/
Subsets: http://www.lintcode.com/en/problem/subsets/
Subsets ii - with dup: https://leetcode.com/problems/subsets-ii/#/description
Combination Sum: http://www.lintcode.com/en/problem/combination-sum/#
Combination Sum ii: http://www.lintcode.com/en/problem/combination-sum-ii/#
Combination Sum iii: https://leetcode.com/problems/combination-sum-iii/#/description
Combination Sum IV: https://leetcode.com/problems/combination-sum-iv/#/description
Valid Sudoku: http://www.lintcode.com/en/problem/valid-sudoku/
Sudoku Solver: https://leetcode.com/problems/sudoku-solver/description/
palindrome partitioning: http://www.lintcode.com/en/problem/palindrome-partitioning/
word ladder: http://www.lintcode.com/en/problem/word-ladder/
word ladder ii: http://www.lintcode.com/en/problem/word-ladder-ii/
generate parentheses: https://leetcode.com/problems/generate-parentheses/description/
restore IP addresses: http://lintcode.com/en/problem/restore-ip-addresses/
palindrome partitioning: http://lintcode.com/en/problem/palindrome-partitioning/
letter combinations of a phone number: http://lintcode.com/en/problem/letter-combinations-of-a-phone-number/
combination sum iv: https://leetcode.com/problems/combination-sum-iv/description/
word search: http://lintcode.com/en/problem/word-search/
word search ii (Trie)
number of islands: https://leetcode.com/problems/number-of-islands/description/
n queens: https://leetcode.com/problems/n-queens/description/
n queens ii: https://leetcode.com/problems/n-queens/description/