leetCode练习(47)
2016-09-30 19:38
302 查看
题目:Permutations II
难度:medium
问题描述:
Given a collection of numbers that might contain duplicates, return all possible unique permutations.
For example,
解题思路:
与47题基本相同,只是多了在回溯时,需要跳过重复的元素。具体不同操作已经注释出,代码如下:
public class Solution {
ArrayList<List<Integer>> list=new ArrayList<List<Integer>>();
public List<List<Integer>> permuteUnique(int[] nums) {
if (nums==null) return list;
Arrays.sort(nums);
diedai(nums,new ArrayList<Integer>(),nums.length);
return list;
}
public void diedai(int[]nums,ArrayList<Integer> templist,int overstep){
int[] temp=nums.clone();
int t;
if(overstep==0){
list.add(templist);
}
for(int i=0;i<temp.length;i++){
t=temp[i];
if(i>0&&temp[i]==temp[i-1]){ //与46题不同之处,需要先将nums进行排队,然后,将重复的跳过。
continue;
}
if(temp[i]==Integer.MAX_VALUE){
continue;
}else{
ArrayList<Integer> copylist=(ArrayList<Integer>)templist.clone();
copylist.add(temp[i]);
temp[i]=Integer.MAX_VALUE;
diedai(temp,copylist,overstep-1);
temp[i]=t;
}
}
}
}
难度:medium
问题描述:
Given a collection of numbers that might contain duplicates, return all possible unique permutations.
For example,
[1,1,2]have the following unique permutations:
[ [1,1,2], [1,2,1], [2,1,1] ]
解题思路:
与47题基本相同,只是多了在回溯时,需要跳过重复的元素。具体不同操作已经注释出,代码如下:
public class Solution {
ArrayList<List<Integer>> list=new ArrayList<List<Integer>>();
public List<List<Integer>> permuteUnique(int[] nums) {
if (nums==null) return list;
Arrays.sort(nums);
diedai(nums,new ArrayList<Integer>(),nums.length);
return list;
}
public void diedai(int[]nums,ArrayList<Integer> templist,int overstep){
int[] temp=nums.clone();
int t;
if(overstep==0){
list.add(templist);
}
for(int i=0;i<temp.length;i++){
t=temp[i];
if(i>0&&temp[i]==temp[i-1]){ //与46题不同之处,需要先将nums进行排队,然后,将重复的跳过。
continue;
}
if(temp[i]==Integer.MAX_VALUE){
continue;
}else{
ArrayList<Integer> copylist=(ArrayList<Integer>)templist.clone();
copylist.add(temp[i]);
temp[i]=Integer.MAX_VALUE;
diedai(temp,copylist,overstep-1);
temp[i]=t;
}
}
}
}
相关文章推荐
- 【程序47】宏#define命令练习(2)(VC6.0可运行版本)
- [LeetCode]47 Permutations II
- LeetCode --- 47. Permutations II
- 【LeetCode-47】Permutations II
- 【leetcode题解】【再做一遍】【47】【M】241. Different Ways to Add Parentheses
- leetCode练习(49)
- LeetCode Online Judge 题目C# 练习 - Add two number
- LeetCode(47) Invert Binary Tree
- leetCode 47.Permutations II (排列组合II) 解题思路和方法
- LeetCode Online Judge 题目C# 练习 - Divid Two Integer
- [置顶] LintCode 与 LeetCode 练习
- leetCode练习(68)
- LeetCode Online Judge 题目C# 练习 - Merge Intervals
- leetcode练习 714. Best Time to Buy and Sell Stock with Transaction Fee
- LeetCode Online Judge 题目C# 练习 - Next Permutation
- LeetCode Online Judge 题目C# 练习 - Search in Rotated Sorted Array II
- 【leetcode】【47】Permutations II
- LeetCode Online Judge 题目C# 练习 - Valid Parentheses
- LeetCode 分类练习(3)—— 指针碰撞
- leetCode练习(91)