解題思路 leetcode第四十題 組合總和

2021-10-06 15:29:49 字數 1174 閱讀 8738

給定乙個陣列 candidates 和乙個目標數 target ,找出 candidates 中所有可以使數字和為 target 的組合。

candidates 中的每個數字在每個組合中只能使用一次。

說明:所有數字(包括目標數)都是正整數。

解集不能包含重複的組合。

示例 1:

輸入: candidates = [10,1,2,7,6,1,5], target = 8,

所求解集為:

[[1, 7],

[1, 2, 5],

[2, 6],

[1, 1, 6]

]示例 2:

輸入: candidates = [2,5,2,1,2], target = 5,

所求解集為:

[[1,2,2],

[5]]

解題思路:本題和39題組合總數十分相似,區別就是列表內的數字是否可以重複使用,所以本題的方法是基於39題的改進,即在遞迴函式內增加乙個變數i,用於控制遞迴函式內遍歷列表的位置,保證每一次遍歷都是從上一層遍歷元素的下乙個元素開始,從而避免使用重複元素。**如下:

class

solution

:def

combinationsum2

(self, candidates: list[

int]

, target:

int)

-> list[list[

int]]:

defsearch

(re,result,nums,t,i):if

sum(re)

>t:

return

ifsorted

(re)

notin result and

sum(re)

== t:

sorted

(re)

)return

for i in

range

(i,len

(nums)):

search(re+

[nums[i]

],result,nums,t,i+1)

result =

search(

,result,candidates,target,0)

return result

提交後,通過。

LeetCode第四十五題 跳躍遊戲

問題簡介 這是乙個跳躍遊戲,規則是通過給定乙個非負整數陣列,最開始就處於陣列第一位即索引為0處,陣列元素數值代表可以跳躍的最大值,要求通過最小的跳躍次數達到陣列最後的索引處 舉例 輸入 2,3,1,1,4 輸出 2 解釋 這個陣列的最小跳躍值是2,第一次從索引0處跳躍1到索引1處,第二次跳躍3到結尾...

LeetCode第四十一題 Python實現

title leetcode no.41 categories tags 給你乙個未排序的整數陣列 nums 請你找出其中沒有出現的最小的正整數。高階 你可以實現時間複雜度為 o n 並且只使用常數級別額外空間的解決方案嗎?示例 1 輸入 nums 1,2,0 輸出 3 示例 2 輸入 nums 3...

LeetCode第四十三題 Python實現

title leetcode no.43 categories tags 給定兩個以字串形式表示的非負整數 num1 和 num2,返回 num1 和 num2 的乘積,它們的乘積也表示為字串形式。示例 1 輸入 num1 2 num2 3 輸出 6 示例 2 輸入 num1 123 num2 45...