这道题,昨晚刚看完排列,然后今天早上就随机挑到这道题,借助昨晚的递归的排列,修改下就可以被accept.
看到有暴力破解的解法,有回溯.非递归解法
class Solution {
public:
vector<vector<int>> re;
void helper(vector<int>& v, int k, int m)
{
if (k == m)
{
vector<int> temp;
for (int i = 0; i <= m; i++)
{
temp.push_back(v[i]);
}
re.push_back(temp);
}
else
{
for (int i = k; i <= m; i++)
{
swap(v[k], v[i]);
helper(v, k + 1, m);
swap(v[k], v[i]);
}
}
}
vector<vector<int>> permute(vector<int>& nums) {
int size = nums.size();
helper(nums, 0, size-1);
return re;
}
};
Runtime: 12 ms, faster than 66.95% of C++ online submissions for Permutations.
Memory Usage: 9.8 MB, less than 23.88% of C++ online submissions for Permutations.