题解 | #没有重复项数字的全排列#
没有重复项数字的全排列
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_; } };