zoukankan      html  css  js  c++  java
  • 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].

    class Solution {
    public:
        void _swap (int &a, int &b) {
            int tmp = a;
            a = b;
            b = tmp;
        }
        bool exist(vector<int>& nums, int num, int start, int end) {
            int i = 0;
            for (i=start; i<end; i++) {
                if (nums[i] == num) {
                    return true;
                }
            }
            return false;
        }
        void _permute(vector<vector<int>> &res, vector<int>& nums, int start, int end) {
    
            if (start >= end) {
                res.push_back(nums);
                return;
            }
            int i;
            for (i=start; i<=end; i++) {
                if (exist(nums, nums[i], start, i)) {
                    continue;
                }
                _swap(nums[start], nums[i]);
                _permute(res, nums, start+1, end);
                _swap(nums[start], nums[i]);
            }
        }
        vector<vector<int>> permuteUnique(vector<int>& nums) {
            sort(nums.begin(), nums.end());
            vector<vector<int>> res;
            int start = 0;
            int end = nums.size() - 1;
            _permute(res, nums, start ,end);
            return res;
        }
    };
  • 相关阅读:
    Qt高级编码约定
    QTextCodec::codecForLocale
    无边框窗口拖动代码
    QString QByteArray char 之间的转换
    Qt 程序发布指南
    qt demo pro
    snort vtun performance on vm
    xhEditor用法
    MVC控制器使用总结
    第七章 模态框
  • 原文地址:https://www.cnblogs.com/SpeakSoftlyLove/p/5184768.html
Copyright © 2011-2022 走看看