LeetCode 40. 组合总和 II(排列组合 回溯)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode 40. 组合总和 II(排列组合 回溯)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1. 題目
給定一個(gè)數(shù)組 candidates 和一個(gè)目標(biāo)數(shù) target ,找出 candidates 中所有可以使數(shù)字和為 target 的組合。
candidates 中的每個(gè)數(shù)字在每個(gè)組合中只能使用一次。
說(shuō)明:
所有數(shù)字(包括目標(biāo)數(shù))都是正整數(shù)。
解集不能包含重復(fù)的組合。
來(lái)源:力扣(LeetCode) 鏈接:https://leetcode-cn.com/problems/combination-sum-ii
著作權(quán)歸領(lǐng)扣網(wǎng)絡(luò)所有。商業(yè)轉(zhuǎn)載請(qǐng)聯(lián)系官方授權(quán),非商業(yè)轉(zhuǎn)載請(qǐng)注明出處。
- 類似題目
LeetCode 216. 組合總和 III(排列組合 回溯)
LeetCode 39. 組合總和(排列組合 回溯)
2. 回溯求解
class Solution { public:vector<vector<int>> combinationSum2(vector<int>& candidates, int target) {sort(candidates.begin(), candidates.end());vector<vector<int>> ans;vector<int> subset;bt(0,0,target,subset,ans,candidates);return ans;}void bt(int i, int sum, int &target, vector<int> &subset, vector<vector<int>> &ans, vector<int> &candidates) {if(i > candidates.size() || sum > target)return;if(i <= candidates.size() && sum == target){ans.push_back(subset);return;}for(int j = i; j < candidates.size(); j++){if(j > i && candidates[j-1] == candidates[j])continue;subset.push_back(candidates[j]);bt(j+1, sum+candidates[j], target, subset, ans, candidates);subset.pop_back();}} };8 ms 7.1 MB
我的CSDN博客地址 https://michael.blog.csdn.net/
長(zhǎng)按或掃碼關(guān)注我的公眾號(hào)(Michael阿明),一起加油、一起學(xué)習(xí)進(jìn)步!
總結(jié)
以上是生活随笔為你收集整理的LeetCode 40. 组合总和 II(排列组合 回溯)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: LeetCode 1335. 工作计划的
- 下一篇: LeetCode 74. 搜索二维矩阵(