LeetCode 47. Permutations II

5419 단어 LeetCode搜索

풀다


모든 배열을 계산하면 중복수가 있어도 차이가 많지 않고 모두 귀속법을 사용한다.대략적인 귀속 사고방식: 순서는 모든 위치에 대해 현재 위치를 이후의 어떤 위치로 교환하고 다음 귀속으로 들어가며 현재 위치에 하나를 더한다.

Code

void per(vector<int> a, int i, int j, vector<vector<int>> &res){
        //   a  
        if(i==j-1){
            res.push_back(a);
            return;
        }
        
        for(int k=i;k<j;k++){
            if(k!=i && a[i]==a[k]) continue;//  
            swap(a[i],a[k]);
            per(a,i+1,j,res);
            //swap(a[i],a[k]);    
        }
    }
    
    vector<vector<int>> permuteUnique(vector<int>& nums) {
        sort(nums.begin(),nums.end());
        vector<vector<int>> res;
        per(nums,0,nums.size(),res);
        return res;
    }

좋은 웹페이지 즐겨찾기