==========================努力奋斗财源广进==========================
给出一组可能包含重复项的数字,返回该组数字的所有排列。结果以字典序升序排列。
import java.util.*;
public class Solution
{
boolean[] mark;
public ArrayList<ArrayList<Integer>> permuteUnique(int[] num)
{
ArrayList<ArrayList<Integer>> res = new ArrayList<>();
LinkedList<Integer> track = new LinkedList<>();
mark = new boolean[num.length];
Arrays.sort(num);
backTrack(num,res,track);
return res;
}
public void backTrack(int[] num, ArrayList<ArrayList<Integer>> res, LinkedList<Integer> track)
{
if(track.size() == num.length)
{
res.add(new ArrayList<Integer>(track));
return;
}
for(int i = 0; i < num.length; i++)
{
if(mark[i] || i>0 && num[i] == num[i-1] && !mark[i-1])
{
continue;
}
track.add(num[i]);
mark[i] = true;
backTrack(num,res,track);
track.removeLast();
mark[i] = false;
}
}
}
//待定
评论区记录复习记录
评论