給定乙個陣列 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...