class Solution {
public:
void DFSII(vector<vector<int>> &result, vector<int> &intermediate, int gap, int start, vector<int> &nums)
{
if (gap == 0)
{ result.push_back(intermediate);
return;
}
int previous = -1;
for (size_t i = start; i < nums.size(); i++)
{
if (nums[i] == previous)
continue;
if (gap < nums[i])
return;
previous=nums[i];
intermediate.push_back(nums[i]);
DFSII(result, intermediate, gap - nums[i], i + 1, nums);
intermediate.pop_back();
}
}
vector<vector<int> > combinationSum2(vector<int> &nums, int target)
{
sort(nums.begin(), nums.end());
vector<vector<int>> result;
vector<int> intermediate;
DFSII(result, intermediate, target, 0, nums);
return result;
}
};
【LeetCode】Combination Sum II
最新推荐文章于 2019-05-07 10:37:18 发布