zoukankan      html  css  js  c++  java
  • [LeetCode]Permutations II

    题目描述:

    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].

    解题思路:

    思路和上题目相似,但需要跳过重复的元素

     1 class Solution {
     2 public:
     3     vector<vector<int>> permuteUnique(vector<int>& nums) {
     4         sort(nums.begin(), nums.end());
     5         vector<vector<int>> result;
     6         vector<int> elem;
     7         vector<bool> visited(nums.size(), false);
     8         permute(nums, visited, result, elem);
     9         return result;
    10     }
    11 private:
    12     void permute(const vector<int> &nums, vector<bool> &visited, vector<vector<int>> &result, vector<int> &elem) {
    13         if (nums.size() == elem.size()) {
    14             result.push_back(elem);
    15             return;
    16         }
    17         
    18         for (int i = 0; i < nums.size(); ++i) {
    19             if (!visited[i]) {
    20                 visited[i] = true;
    21                 elem.push_back(nums[i]);
    22                 permute(nums, visited, result, elem);
    23                 elem.pop_back();
    24                 visited[i] = false;
    25                 while (i < nums.size() - 1 && nums[i] == nums[i + 1]) ++i; // 跳过重复的元素
    26             }
    27         }
    28     }
    29 };
  • 相关阅读:
    多表模型
    母版,单表操作,双下划线模糊查询
    模板层
    视图层
    路由层
    orm
    浅谈cookie,sessionStorage和localStorage区别
    实现元素垂直居中的方法(补充)
    实现元素垂直居中的方法
    <a href="javascript:;"></a>
  • 原文地址:https://www.cnblogs.com/skycore/p/5266877.html
Copyright © 2011-2022 走看看