**(leetcode_backtracking)Permutations

来源:互联网 发布:linux centos镜像 编辑:程序博客网 时间:2024/05/22 00:12

Permutations

 Total Accepted: 41857 Total Submissions: 131799My Submissions

Given a collection of numbers, return all possible permutations.

For example,
[1,2,3] have the following permutations:
[1,2,3][1,3,2][2,1,3][2,3,1][3,1,2], and [3,2,1].

Show Tags
Have you met this question in a real interview? 
Yes
 
No

Discuss


class Solution {    vector<vector<int> > result;    vector<int> single;    vector<bool> flag;public:    vector<vector<int> > permute(vector<int> &num) {        if(num.size()==0)            return result;                    sort(num.begin(), num.end());         for(int i=0; i<num.size(); i++){            flag.push_back(false);            single.push_back(num[i]);        }        bk(num, 0);        return result;    }    void bk(vector<int> &num, int index){        if(index==num.size()){            result.push_back(single);            return;        }        int preNum = num[0]-1;        for(int i=0; i<num.size(); i++){            if(!flag[i]&&preNum!=num[i]){ //注意会出现重复数字!!                preNum=num[i];                flag[i]=true;                single[index]=num[i];                bk(num, index+1);                flag[i]=false;            }        }    }};


0 0