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

    思路:

    举例说明较为形象:

    1,1,2第一个选择1,没事,第一个选择不作要求,肯定不会相同,但是第二个
    我就要比较了,因为start是1,第二个也是1,前面已经有去,再来一个就会重复。
    就和数学里面排列组合一样。携程计算机语言就是第i次交换的时候,与后面第j个数字交换,得看[i...j-1]
    是否还有重复数字,有重复不进行任何操作

    代码:

    class Solution {
    public:
    //https://leetcode.com/problems/permutations-ii/
        vector<vector<int>> permuteUnique(vector<int>& nums) {
            vector<vector<int> >result;
            permuteHelper(0,nums,result);
            return result;
        }
    
        void permuteHelper(int start,vector<int>& nums,vector<vector<int> >&result){
            if(start==nums.size()){
                result.push_back(nums);
                return;
            }
            for(int i=start;i<nums.size();i++){
                if(i==start||!findDuplicates(nums[i],start,i,nums)){
                    swap(nums[i],nums[start]);
                    permuteHelper(start+1,nums,result);
                    swap(nums[i],nums[start]);
                }
                //举例说明,1,1,2第一个选择1,没事,第一个选择不作要求,肯定不会相同,但是第二个
                //我就要比较了,因为start是1,第二个也是1,前面已经有去,再来一个就会重复。
                //就和数学里面排列组合一样。携程计算机语言就是第i次交换的时候,与后面第j个数字交换,得看[i...j-1]
                //是否还有重复数字,有重复不进行任何操作
            }
        }
    
        bool findDuplicates(int target,int start,int end,vector<int>& nums){
            for(int i=start;i<end;i++){
                if(nums[i]==target){
                    return true;
                }
            }
            return false;
        }
    };


  • 相关阅读:
    今週のschedule
    软件架构师应该知道的97件事
    没办法的复习
    优秀程序员的45个习惯
    程序员如何追女孩
    那些相见恨晚的 JavaScript 技巧
    CodeSmith开发系列资料总结
    HR的至高机密:20个公司绝对不会告诉你的潜规则
    asp.net页面出错时的处理方法
    Asp.net 文件上传的 FileUpload FileName 和 FileUpload PostedFile.FileName的细节问题
  • 原文地址:https://www.cnblogs.com/jsrgfjz/p/8519876.html
Copyright © 2011-2022 走看看