Leetcode 全排列问题不含重复和含重复剪枝情况
不重复,直接这样递归就行
class Solution {
List> res = new ArrayList<>();
public List> permute(int[] nums) {
dfs(nums,0);
return res;
}public void dfs(int[] nums,int index){
if(index==nums.length){
ArrayList list = new ArrayList<>();
for(int num:nums) list.add(num);
res.add(list);
}
for(int i=index;
i
含重复,剪枝叶的时候,需要注意,不是简单的跳过,而是前面出现过,就要跳过。因为swap后,顺序被打乱了
public class Solution {
List> res = new ArrayList<>();
public List> permuteUnique(int[] nums) {
Arrays.sort(nums);
dfs(nums,0);
return res;
}public void dfs(int[] nums, int index){
if(index == nums.length){
ArrayList list = new ArrayList<>();
for(Integer num:nums) list.add(num);
res.add(list);
return;
}
for(int i=index;
i
【Leetcode 全排列问题不含重复和含重复剪枝情况】
推荐阅读
- 危险也是机会
- 活着就是生命的全部意义
- 【Leetcode/Python】001-Two|【Leetcode/Python】001-Two Sum
- leetcode|leetcode 92. 反转链表 II
- 一个健康的APP和健全的人格大体类似
- NeuVector 会是下一个爆款云原生安全神器吗()
- 全过程工程咨询——时间管理(12)
- 别墅庭院设计,不同的别墅庭院设计也给人视觉上完全不一样的!
- 不让记忆、感觉、情绪成为孩子的负累|不让记忆、感觉、情绪成为孩子的负累|《全脑教养法》(四)
- (全员向连载)云间当铺(一)