qidao123.com技术社区-IT企服评测·应用市场
标题:
回溯算法——分列篇
[打印本页]
作者:
天空闲话
时间:
昨天 15:17
标题:
回溯算法——分列篇
目录
一、全分列
二、全分列II
一、全分列
46. 全分列 - 力扣(LeetCode)
class Solution {
List<List<Integer>> result=new ArrayList<>();
LinkedList<Integer> path=new LinkedList<>();
boolean[] used;
public List<List<Integer>> permute(int[] nums) {
used=new boolean[nums.length];
backtracking(nums);
return result;
}
public void backtracking(int[] nums){
if(path.size()==nums.length){
result.add(new ArrayList<>(path));
return;
}
for(int i=0;i<nums.length;i++){
if(used[i])continue;
used[i]=true;
path.add(nums[i]);
backtracking(nums);
path.removeLast();//移除最后一个添加的元素
used[i]=false;//元素修改为未使用
}
}
}
复制代码
二、全分列II
47. 全分列 II - 力扣(LeetCode)
class Solution {
List<List<Integer>> result=new ArrayList<>();
List<Integer> path=new ArrayList<>();
public List<List<Integer>> permuteUnique(int[] nums) {
boolean[] used=new boolean[nums.length];
Arrays.fill(used,false);
Arrays.sort(nums);
backtracking(nums,used);
return result;
}
public void backtracking(int[] nums,boolean[] used){
if(path.size()==nums.length){
result.add(new ArrayList<>(path));
return;
}
for(int i=0;i<nums.length;i++){
if(i>0&&nums[i]==nums[i-1]&&used[i-1]==true)continue;
if(used[i]==false){
used[i]=true;
path.add(nums[i]);
backtracking(nums,used);
path.removeLast();
used[i]=false;
}
}
}
}
复制代码
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 qidao123.com技术社区-IT企服评测·应用市场 (https://dis.qidao123.com/)
Powered by Discuz! X3.4