摘要:要求中的每一個(gè)元素在一個(gè)組合中只能被使用一次。輸入候選數(shù)字集和目標(biāo)數(shù)字結(jié)果集應(yīng)當(dāng)是想法首先這道題和題非常的相像。因此和題的解法相比,我們需要進(jìn)行一次對(duì)于重復(fù)元素跳過的操作。
題目詳情
Given a collection of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T.想法
Each number in C may only be used once in the combination.這道題的意思是,輸入一個(gè)候選數(shù)字集(C)和一個(gè)目標(biāo)數(shù)字(T).要求我們找出C中的不同元素組合,使得這些元素加和等于T。要求C中的每一個(gè)元素在一個(gè)組合中只能被使用一次。
For example, 輸入候選數(shù)字集 [10, 1, 2, 7, 6, 1, 5] 和目標(biāo)數(shù)字 8,
結(jié)果集應(yīng)當(dāng)是
[
[1, 7],
[1, 2, 5],
[2, 6],
[1, 1, 6]
]
首先這道題和39題CombinationSum非常的相像。唯一的差別就在于這道題要求,每一個(gè)元素只能被使用一次。
因此和39題的解法相比,我們需要進(jìn)行一次對(duì)于重復(fù)元素跳過的操作。
解法public List> combinationSum2(int[] candidates, int target) { Arrays.sort(candidates); List
> res = new ArrayList
>(); backtrack(res,new ArrayList
(),candidates,target,0); return res; } public void backtrack(List > res,List
tempList,int[] candidates,int remain,int start){ if(remain < 0)return; if(remain == 0){ res.add(new ArrayList<>(tempList)); }else{ for(int i=start;i start && candidates[i] == candidates[i-1]) continue; tempList.add(candidates[i]); backtrack(res,tempList,candidates,remain-candidates[i],i+1); tempList.remove(tempList.size()-1); } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/68526.html
摘要:前言從開始寫相關(guān)的博客到現(xiàn)在也蠻多篇了。而且當(dāng)時(shí)也沒有按順序?qū)懍F(xiàn)在翻起來覺得蠻亂的??赡艽蠹铱粗卜浅2环奖恪K栽谶@里做個(gè)索引嘻嘻。順序整理更新更新更新更新更新更新更新更新更新更新更新更新更新更新更新更新 前言 從開始寫leetcode相關(guān)的博客到現(xiàn)在也蠻多篇了。而且當(dāng)時(shí)也沒有按順序?qū)憽F(xiàn)在翻起來覺得蠻亂的。可能大家看著也非常不方便。所以在這里做個(gè)索引嘻嘻。 順序整理 1~50 1...
找出string里的單詞。 186. Reverse Words in a String II, 434. Number of Segments in a String combination類型題 77. Combinations 39. Combination Sum 40. Combination Sum II 216. Combination Sum III 494. Target S...
摘要:和唯一的不同是組合中不能存在重復(fù)的元素,因此,在遞歸時(shí)將初始位即可。 Combination Sum I Problem Given a set of candidate numbers (C) and a target number (T), find all unique combinations in C where the candidate numbers sums to T...
摘要:此時(shí),若也正好減小為,說明當(dāng)前集合是正解,加入數(shù)組。兩個(gè)無法得到正解的情況是在為,而不為時(shí),當(dāng)然已經(jīng)無法得到正解,。在不為而卻已經(jīng)小于等于的情況下,此時(shí)仍要加入其它數(shù)以令為,而要加入的數(shù)都是到的正整數(shù),所以已無法滿足令為的條件,。 Combination Sum I & II: link Combination Sum III Problem Find all possible com...
摘要:深度優(yōu)先搜索復(fù)雜度時(shí)間空間遞歸??臻g思路因?yàn)槲覀兛梢匀我饨M合任意多個(gè)數(shù),看其和是否是目標(biāo)數(shù),而且還要返回所有可能的組合,所以我們必須遍歷所有可能性才能求解。這題是非?;厩业湫偷纳疃葍?yōu)先搜索并返回路徑的題。本質(zhì)上是有限深度優(yōu)先搜索。 Combination Sum I Given a set of candidate numbers (C) and a target number (...
閱讀 3251·2021-11-15 11:37
閱讀 2465·2021-09-29 09:48
閱讀 3829·2021-09-22 15:55
閱讀 3026·2021-09-22 10:02
閱讀 2650·2021-08-25 09:40
閱讀 3241·2021-08-03 14:03
閱讀 1709·2019-08-29 13:11
閱讀 1581·2019-08-29 12:49