您的位置:首页 > 其它

**(leetcode_backtracking)Permutations

2015-03-05 10:03 267 查看


Permutations

Total Accepted: 41857 Total
Submissions: 131799My Submissions

Question
Solution

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;
            }
        }
    }
};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: