原创

[百战LeetCode][38. 有重复项数字的全排列]


==========================努力奋斗财源广进==========================

一、算法题目

给出一组可能包含重复项的数字,返回该组数字的所有排列。结果以字典序升序排列。

1、我的题解

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;
        }

    }
}

2、优秀题解

//待定

三、解法心得

四、自我监督

评论区记录复习记录

  • 作者:北斗七点半联系作者
  • 发表时间:2022-12-11 23:03
  • 版权声明:禁止转载
  • 非公众号转发
  • 评论