题解 | #没有重复项数字的全排列#
没有重复项数字的全排列
https://www.nowcoder.com/practice/4bcf3081067a4d028f95acee3ddcd2b1
#include <vector>
struct pair_ {
int i;
bool used;
};
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param num int整型vector
* @return int整型vector<vector<>>
*/
void permute_(int pos, int len, vector<int>& num, vector<int>& res,
vector<vector<int> >& return_) {
if (pos == len) {
return_.push_back(res);
return;
}
int target = num[pos];
//首数字与之后的每个数字交换
for (int i = pos; i < len; i++) {
num[pos] = num[i];
num[i] = target;
res.push_back(num[pos]);
permute_(pos + 1, len, num, res, return_);
res.pop_back();
num[i] = num[pos];
num[pos] = target;
}
}
vector<vector<int> > permute(vector<int>& num) {
vector<vector<int> > return_;
if (num.empty())
return return_;
vector<int> res;
int len = num.size();
permute_(0, len, num, res, return_);
return return_;
}
};

