您的位置:首页 > 其它

Leetcode Permutations II

2015-04-15 13:01 465 查看
题目地址:https://leetcode.com/problems/permutations-ii/

题目解析:和permutations一样,只需要在交换元素是判断元素是否重复即可

题目解答:

public class Solution {
public List<ArrayList<Integer>> permuteUnique(int[] num) {
List<ArrayList<Integer>> ret = new ArrayList<ArrayList<Integer>>();
if(num == null || num.length == 0){
return ret;
}

Arrays.sort(num);
permute(num,0,ret);
return ret;
}

private void permute(int[] num,int start,List<ArrayList<Integer>> res){
if(start == num.length - 1){
ArrayList<Integer> temp = new ArrayList<Integer>();
for(int i=0;i<num.length;i++){
temp.add(num[i]);
}

res.add(temp);
return;
}

for(int i=start;i<num.length;i++){
if(containsDuplicate(num,start,i)){
int temp = num[start];
num[start] = num[i];
num[i] = temp;

permute(num,start+1,res);

temp = num[start];
num[start] = num[i];
num[i] = temp;
}
}
}

private boolean containsDuplicate(int[] arr, int start, int end) {
for (int i = start; i <= end-1; i++) {
if (arr[i] == arr[end]) {
return false;
}
}
return true;
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: