LeetCode 698 劃分為k個相等的子集

2021-10-06 20:16:17 字數 962 閱讀 5369

給定乙個整數陣列 nums 和乙個正整數 k,找出是否有可能把這個陣列分成 k 個非空子集,其總和都相等。

回溯:因為每個元素都要用上,那取到和為target的一組值,就設定total為0重新取。遞迴終止條件是,當沒有值可取且target等於total。一旦找到這樣的集合,提前阻斷,一直返回true

注意:對nums從大到小排序,如果最大的大於target,直接返回false。節省時間。

class

solution

:def

canpartitionksubsets

(self, nums, k)

: target =

sum(nums)

// k

ifsum(nums)

% k :

return

false

nums.sort(reverse=

true

)print

(nums)

if nums[0]

> target:

return

false

defdfs

(remain, total)

:if total == target:

iflen

(remain)==0

:return

true

return dfs(remain,0)

for i, n in

enumerate

(remain):if

(total + n)

<= target and dfs(remain[

:i]+remain[i+1:

], total+n)

:return

true

return

false

return dfs(nums,

0)

LeetCode698 劃分為k個相等的子集

給定乙個整數陣列 nums 和乙個正整數 k,找出是否有可能把這個陣列分成 k 個非空子集,其總和都相等。示例 1 輸入 nums 4,3,2,3,5,2,1 k 4 輸出 true 說明 有可能將其分成 4 個子集 5 1,4 2,3 2,3 等於總和。思路 1.計算出每個子集的和,為 sum s...

leetcode 698 劃分為k個相等的子集

給定乙個整數陣列 nums 和乙個正整數 k,找出是否有可能把這個陣列分成 k 個非空子集,其總和都相等。示例 1 輸入 nums 4,3,2,3,5,2,1 k 4 輸出 true 說明 有可能將其分成 4 個子集 5 1,4 2,3 2,3 等於總和。1 k len nums 16 0 nums...

698 劃分為k個相等的子集 python

給定乙個整數陣列 nums 和乙個正整數 k,找出是否有可能把這個陣列分成 k 個非空子集,其總和都相等。示例 1 輸入 nums 4,3,2,3,5,2,1 k 4 輸出 true 說明 有可能將其分成 4 個子集 5 1,4 2,3 2,3 等於總和。注意 1 k len nums 16 0 n...