81.允许重复选择元素的组合
思路:普通的dfs
82.含有重复元素集合的组合
思路:先排序+dfs
83.没有重复元素集合的全排列
思路:可以采用dfs。
84.含有重复元素集合的全排列
思路:先排序然后dfs,在涉及到重复元素的时候,需要判断该位置的是否会被重复选择相同的值,这里和82题有点不一样,需要从逆向思维去考虑重复,如果该点没被选择,且上一个相同值的点就不能被选择,在选择的时候保证相对顺序。
if vis[i] || i > 0 && !vis[i-1] && v == nums[i-1] { // !vis[i-1] 表示上一个填充
// 然后每次填入的数一定是这个数所在重复数集合中「从左往右第一个未被填过的数字」
continue
}
85.生成匹配的括号
思路:dfs
86.分割回文子字符串
思路:dfs
87.复原 IP
思路:dfs
88.爬楼梯的最少成本
思路:动态规划
89.房屋偷盗
思路:动态规划
90.环形房屋偷盗
思路:动态规划