在Combination Sum这道题中用到了int** columnSizes参数,我认为他是应该申请了内存的,可是当我调用columnSizes[0] = (int*)malloc(sizeof(int));的时候没问题,但是当我调用columnSizes[1] = (int*)malloc(sizeof(int));就会出现runtime error的问题,这是为什么呢?
这道题是递归问题
代码:
class Solution {
public:
vector > result;
vector candidates;
vector > combinationSum(vector &candidates, int target) {
this->candidates = candidates;
sort(this->candidates.begin(),this->candidates.end());
getCombination(*(new vector()),0,target);
return result;
}
void getCombination(vector<int> v, int sum, int target)
{
int last=INT_MIN;
if(v.size()>0)
{
last = v[v.size()-1];
}
int i = 0;
for(;i<candidates.size();i++)
{
if(candidates[i]>=last)
{
break;
}
}
for(int j=i;j<candidates.size();j++)
{
if(sum + candidates[j]==target)
{
v.push_back(candidates[j]);
result.push_back(v);
v.pop_back();
}
else if(sum + candidates[j]<target)
{
v.push_back(candidates[j]);
getCombination(v, sum+candidates[j],target);
v.pop_back();
}
else
{
return;
}
}
}
};
int**,指针的指针
int** columnSizes = (int **)malloc(n*sizeof(int*));
columnSizes[0] = (int*)malloc(sizeof(int));
columnSizes[1] = (int*)malloc(sizeof(int));