zoukankan      html  css  js  c++  java
  • LeetCode 47. Permutations II

    47. Permutations II

    Description Submission Solutions

    • Total Accepted: 106328
    • Total Submissions: 338713
    • Difficulty: Medium
    • Contributors: Admin 

    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],
      [2,1,1]
    ]

    Subscribe to see which companies asked this question.

    【题目分析】

    相比较上一个题目,这个题目中元素是可能重复的。如果还按照之前的算法,会导致很多结果是重复的。

    【思路】

    1. 将元素排序,这样所有重复的元素就变为相邻元素,有利于我们的处理。

    2. 判断如果当前元素和它前一个元素相同,那么只有在前一个元素已经被使用情况下当前元素才能被使用,这就能避免出现重复的结果。因为无论哪种结果,重复元素在结果中的相对顺序是固定的,彼此之间没有交换位置,而这种顺序只可能有一种。

    【java代码】

     1 public class Solution {
     2     public List<List<Integer>> permuteUnique(int[] nums) {
     3         Arrays.sort(nums);
     4         int[] used = new int[nums.length];
     5         List<List<Integer>> list = new ArrayList<>();
     6         backtrack(list, new ArrayList<>(), nums, used);
     7         return list;
     8     }
     9     
    10      private void backtrack(List<List<Integer>> list, List<Integer> tempList, int [] nums, int[] used){
    11        if(tempList.size() == nums.length){
    12           list.add(new ArrayList<>(tempList));
    13           return;
    14        } 
    15        for(int i = 0; i < nums.length; i++){ 
    16           if(used[i] == 1) continue;
    17           if(i > 0 && nums[i-1]==nums[i] && used[i-1]==0) continue;
    18           used[i] = 1;
    19           tempList.add(nums[i]);
    20           backtrack(list, tempList, nums, used);
    21           tempList.remove(tempList.size() - 1);
    22           used[i] = 0;
    23        }
    24    }
    25 }
  • 相关阅读:
    pikachu——Unsafe Filedownload Fileupload(不安全的文件下载和上传)
    pikachu——Files Inclusion(文件包含漏洞)
    pikachu——RCE
    pikachu——SQL注入
    pikachu——XSS(跨网站脚本漏洞)
    pikachu——CSRF
    pikachu——暴力破解
    GCD 信号量 dispatch_semaphore_t
    【转】iOS 9 Storyboard 教程(一上)
    一个大小为N的数组,里面是N个整数,怎样去除重复的数
  • 原文地址:https://www.cnblogs.com/liujinhong/p/6474099.html
Copyright © 2011-2022 走看看