内容来自samhan666
491. 非减子数列
给定一个整数数组 nums,返回给定数组中至少有两个元素的所有不同的可能非递减子序列。您可以按任何顺序返回答案。 copyright zvvq
示例1:
输入:nums = [4,6,7,7]
输出:[[4,6],[4,6,7],[4,6,7,7],[4,7],[4,7,7],[6,7],[6, 7,7],[7,7]]
输入:nums = [4,4,3,2,1] 本文来自zvvq
输出:[[4,4]]限制: 内容来自samhan
1 -100 原始页面 内容来自zvvq
1
2
copyright zvvq
3 zvvq
4 本文来自zvvq
5 内容来自zvvq,别采集哟
6 本文来自zvvq
7 zvvq好,好zvvq
8
9 zvvq.cn
10
11
zvvq好,好zvvq
12 本文来自zvvq
13
14 zvvq好,好zvvq
15 zvvq.cn
16 zvvq.cn
17
zvvq好,好zvvq
18
内容来自samhan
19
zvvq好,好zvvq
20
zvvq.cn
21
copyright zvvq
22
23
内容来自samhan666
24 zvvq好,好zvvq
25 zvvq.cn
26 内容来自zvvq,别采集哟
public List<list>> findSubsequences(int[] nums) {
List<list>> list = new ArrayList(); 内容来自zvvq
List<integer> seq = new LinkedList(); 内容来自zvvq,别采集哟
Set<integer> set = new HashSet(); zvvq好,好zvvq
backTracking(列表, seq, nums, 0, 设置); 内容来自samhan
返回列表;
本文来自zvvq
}
public void backTracking(List<list>>list, List<integer> seq, int[] nums, int start, Set<integer> set){
if(start == nums.length){
返回; zvvq好,好zvvq
}
内容来自samhan
for(int i=start; i<nums.length i if set.contains>= 1 && (nums[i] 1 && nums[i]>= seq.get(seq.size()-2)){ 内容来自samhan
list.add(new ArrayList(seq));
copyright zvvq
}
if(seq.size() == 1 || nums[i]>= seq.get(seq.size()-1)){ 内容来自zvvq,别采集哟
backTracking(list,seq, nums, i+1, new HashSet());
本文来自zvvq
}
本文来自zvvq
// 回溯 内容来自zvvq,别采集哟
seq.remove(seq.size()-1);
zvvq
}
}
</nums.length></integer></integer></list></integer></integer></list></list> 本文来自zvvq
46. 排列
给定一个由不同整数组成的数组 nums,返回所有可能的排列。您可以按任何顺序返回答案。
内容来自zvvq,别采集哟
示例1:
输入:nums = [1,2,3]
本文来自zvvq
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1] 】 内容来自samhan666
示例2:输入:nums = [0,1] 内容来自samhan
输出:[[0,1],[1,0]]
内容来自zvvq,别采集哟
示例3:输入:nums = [1]
内容来自samhan
输出:[[1]]限制:
1 -10 nums 的所有整数都是唯一的。
1 内容来自samhan
2 内容来自samhan
3
copyright zvvq
4
内容来自zvvq,别采集哟
5 zvvq.cn
6
7
8 本文来自zvvq
9
zvvq
10 copyright zvvq
11 zvvq.cn
12
13 内容来自samhan
14 copyright zvvq
15
zvvq.cn
16 本文来自zvvq
17
zvvq好,好zvvq
18 内容来自zvvq,别采集哟
19
20
zvvq.cn
21 zvvq.cn
22 zvvq好,好zvvq
23
内容来自samhan
24
zvvq
25 zvvq
26 zvvq好,好zvvq
27
内容来自samhan
28
29 zvvq.cn
public List<list>> permute(int[] nums) { zvvq.cn
List<list>> list = new ArrayList(); 内容来自zvvq,别采集哟
List<integer> 排列 = new LinkedList();
Integer[] numsI = Arrays.stream(nums).boxed().toArray(Integer[]::new); 内容来自zvvq,别采集哟
List<integer> numList = new ArrayList(Arrays.asList(numsI)); zvvq
backTracking(列表、排列、numList);
返回列表; copyright zvvq
}
内容来自zvvq
public void backTracking(List<list>> list, List<integer> 排列, List<integer> nums){ 内容来自zvvq,别采集哟
if(nums.size()==0){
内容来自zvvq,别采集哟
list.add(new ArrayList(排列)); 内容来自samhan666
返回;
}
for(int i=0; i<nums.size i permutation.add list> workNums = new ArrayList(nums);
内容来自zvvq
workNums.remove(Integer.valueOf(nums.get(i))); copyright zvvq
backTracking(列表、排列、workNums);
排列.删除(排列.size()-1); copyright zvvq
}
} 内容来自samhan666
</nums.size></integer></integer></list></integer></integer></list></list> 本文来自zvvq
47. 排列 II
给定可能包含重复项的数字 nums 集合,以任何顺序返回所有可能的唯一排列。 zvvq
示例1: zvvq.cn
输入:nums = [1,1,2] zvvq.cn
输出:
[[1,1,2], 内容来自samhan666
[1,2,1], zvvq好,好zvvq
[2,1,1]]
输入:nums = [1,2,3]
内容来自samhan666
输出:[[1,2,3],[1,3,2],[2,1,3],[2,3,1],[3,1,2],[3,2,1] 】限制:
copyright zvvq
1 -10 原始页面 zvvq好,好zvvq
1
2
内容来自samhan666
3 zvvq
4
5 zvvq
6 zvvq好,好zvvq
7
8 内容来自samhan666
9 内容来自zvvq
10
内容来自samhan
11 内容来自samhan
12
copyright zvvq
13 copyright zvvq
14 内容来自zvvq
15
zvvq好,好zvvq
16 copyright zvvq
17 内容来自samhan
18
List<list>> list = new ArrayList();
zvvq.cn
公共列表> permuteUnique(int[] nums) {
List<integer> 排列 = new LinkedList(); zvvq好,好zvvq
int[] flags = new int[nums.length]; zvvq
backTracking(排列、数字、标志); 内容来自zvvq,别采集哟
返回列表; 本文来自zvvq
}
copyright zvvq
public void backTracking(List<integer> permutation, int[] nums, int[] flags){ copyright zvvq
if(permutation.size() == nums.length){
zvvq
list.add(new ArrayList(排列)); 本文来自zvvq
返回;
内容来自samhan
}
Set<integer> set = new HashSet();
内容来自samhan
for(int i=0; i<nums.length i if set.contains int num="nums[i];" backtracking></nums.length></integer></integer></integer></list>
内容来自samhan666
以上就是LeetCode DayBackTracking 第 4 部分的详细内容,更多请关注其它相关文章! 内容来自zvvq,别采集哟