Leetcode/NeetCode
[BackTrack][Medium] 40. Combination Sum II
자전거통학
2024. 7. 26. 00:10
https://leetcode.com/problems/combination-sum-ii/description/
주어진 정수 배열의 합이 target이 되는 조합을 찾아라.
이때 정수에는 중복값이 있을 수 있다.
결과에서 중복 결과를 제거하라.
Subset II와 거의 같은 풀이의 문제.
같은 로직으로 중복을 제거 할 수 있다.
코드
더보기
void combinationSum2BT(int idx, vector<vector<int>>& vRet, vector<int>& vCur, vector<int>& candidates, int target)
{
if(target <= 0)
{
if(target == 0)
vRet.push_back(vCur);
return;
}
for(int q = idx; q < candidates.size(); ++q)
{
if(q>idx && candidates[q-1]==candidates[q])
continue;
vCur.push_back(candidates[q]);
combinationSum2BT(q+1, vRet, vCur, candidates, target-candidates[q]);
vCur.pop_back();
}
}
vector<vector<int>> combinationSum2(vector<int>& candidates, int target)
{
sort(candidates.begin(), candidates.end());
vector<vector<int>> vRet;
vector<int> vCur;
combinationSum2BT(0, vRet, vCur, candidates, target );
return vRet;
}
결과