zoukankan      html  css  js  c++  java
  • LeetCode--047--全排列 II(java)

    给定一个可包含重复数字的序列,返回所有不重复的全排列。

    示例:

    输入: [1,1,2]
    输出:
    [
      [1,1,2],
      [1,2,1],
      [2,1,1]
    ]

    对比46题增加了used数组,判断该数上次是否使用过。

    TIME:O(N!)

    SPACE:O(N)

     1 class Solution {
     2     public List<List<Integer>> permuteUnique(int[] nums) {
     3         List<List<Integer>> res = new ArrayList<>();
     4         if(nums.length == 0 || nums==null)return res;
     5         Arrays.sort(nums);
     6         helper(res,new ArrayList<>(),nums,new boolean[nums.length]);
     7         return res;
     8     }
     9     public void helper(List<List<Integer>> res,List<Integer> list,int[] nums,boolean[] used){
    10         if(list.size() == nums.length){
    11             res.add(new ArrayList<>(list));
    12             
    13         }
    14         for(int i = 0;i < nums.length;i++){
    15             if(used[i] || i > 0 && nums[i] == nums[i - 1] && used[i-1])continue;
    16             used[i] = true;
    17             list.add(nums[i]);
    18             helper(res,list,nums,used);
    19             
    20             list.remove(list.size() - 1);
    21             used[i]=false;
    22         }
    23     }
    24     
    25 }
  • 相关阅读:
    Nginx配置文件
    SSM三层模型之间的参数传递
    Junit4用法
    常量类的设计
    初识Oracle
    sss
    sss
    sss
    sss
    sss
  • 原文地址:https://www.cnblogs.com/NPC-assange/p/10818538.html
Copyright © 2011-2022 走看看