Leetcode 上的一道算法题
#include
#include
using namespace std;
class Solution {
public:
vector > permute(vector nums) {
vector > rt;
rt = permu_dfs(nums, 0, rt);
//cout<< rt.size()<< endl;
return rt;
}
vector<vector<int> > permu_dfs(vector<int>& nums, int start, vector<vector<int> > input){
if(start == nums.size() - 1){
input.push_back(nums);
return input;
}
for(int i = start; i < nums.size(); i++){
swap(nums[i], nums[start]);
permu_dfs(nums, start + 1, input);
swap(nums[i], nums[start]);
}
}
};
int main(){
vector a{1,2};
Solution s;
vector > rt;
rt = s.permute(a);
cout<< rt.size()<< endl;
return 0;
}
运行时报错:
*** Error in `./a.out': double free or corruption (out): 0x0000000000400ad0 ***
Aborted (core dumped)
之前同样的代码还报过munmap_chunk(): invalid pointer, 不知道这回报的为啥不一样。。
试过permu_dfs函数rt传参数用引用,返回值改成void,问题解决了,但一直没搞明白这代码问题出哪了。