标签:style blog color io os ar java for sp
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]
, and [2,1,1]
.
public class Solution { public List<Integer> toList(int[] num) { List<Integer> p = new ArrayList<Integer>(num.length); for (int element : num) { p.add(element); } return p; } public void swap(int[] num, int i, int j) { int p = num[i]; num[i] = num[j]; num[j] = p; } public List<List<Integer>> permuteUnique(int[] num) { List<List<Integer>> result = new LinkedList<List<Integer>>(); if (num == null || num.length <= 0) { return result; } Arrays.sort(num); result.add(toList(num)); int i; int j; while (true) { for (i = num.length - 1; i > 0; i-- ) { if (num[i] > num[i - 1]) { break; } } if (i == 0) { break; } for (j = num.length - 1; j > 0; j-- ) { if (num[j] > num[i - 1]) { break; } } swap(num, i - 1, j); j = num.length - 1; while (i < j) { swap(num, i, j); i++ ; j-- ; } result.add(toList(num)); } return result; } }
标签:style blog color io os ar java for sp
原文地址:http://blog.csdn.net/jiewuyou/article/details/40072479