416 分割等和子集

2021-10-19 10:50:14 字數 855 閱讀 4104

給定乙個只包含正整數的非空陣列。是否可以將這個陣列分割成兩個子集,使得兩個子集的元素和相等。

注意:每個陣列中的元素不會超過 100

陣列的大小不會超過 200

# 判斷所給陣列是否滿足條件,若陣列中任意數字和為總和二分之一(總和必須為偶數)則為true

class

solution

:def

canpartition

(self, nums: list[

int])-

>

bool

:# 判斷所給陣列是否滿足條件

iflen

(nums)

>

200or

len(nums)

<2:

return

false

x =sum(nums)

# 求和

if x %2==

1:# 判斷總和是否為偶數

return

false

half = x /

2# 求總和的二分之一

d =# 初始化乙個字典用來儲存數字和(若為列表會超時)(字典不僅存有陣列中單個數字,還有任意數字和)

for num in nums:

for k in

list

(d.keys())

: r = num + k # 使陣列中每個數字和字典中數字相加

if r == half:

return

true

d[r]=0

# 往字典新增任意數字和

return

false

416 分割等和子集

給定乙個只包含正整數的非空陣列。是否可以將這個陣列分割成兩個子集,使得兩個子集的元素和相等。注意 每個陣列中的元素不會超過 100 陣列的大小不會超過 200 示例 1 輸入 1,5,11,5 輸出 true 解釋 陣列可以分割成 1,5,5 和 11 示例 2 輸入 1,2,3,5 輸出 fals...

416 分割等和子集

主要題目中說了不超過100個數字,數字都不超過200。所以可能的和不會超過20000,這個量級對計算機來說不算大,所以考慮用dp考察每個可能的和是否存在。class solution int sum accumulate nums.begin nums.end 0 if sum 1 int siz ...

416 分割等和子集

題目描述 給定乙個只包含正整數的非空陣列。是否可以將這個陣列分割成兩個子集,使得兩個子集的元素和相等。注意 每個陣列中的元素不會超過 100 陣列的大小不會超過 200 示例 1 輸入 1,5,11,5 輸出 true 解釋 陣列可以分割成 1,5,5 和 11 示例 2 輸入 1,2,3,5 輸出...