leetcode 416 分割等和子集

2021-08-21 18:54:42 字數 492 閱讀 7200

方法一:用動態規劃

class solution  }}

return res[half];}};

方法二:利用遞迴,(dfs)此方法較動態規劃要好很多;

基本思想:舉例子說明最容易理解,例如 nums=[1,5,4,3,7];

第一步:對陣列進行排序,nums=[1,3,4,5,7],求出其和的一半 half=10;對於陣列中元素要麼在這乙個子集中,要麼在另外乙個子集中。

第二步:例如1如果在乙個子集中,相當於在[3,4,5,7]中去找乙個子集和為9的再加上1這個元素,或者1在另外乙個子集中,所以就相當於在[3,4,5,7] 中找乙個和依舊為10 的子集,因此我們可以獲得遞迴方程式;

recur(nums,0,10)=recur(nums,1,9)||recur(nums,1,10);

class solution  }}

return res[half];}};

LeetCode416 分割等和子集

主要的思想 於0 1揹包問題,解決方法是動態規劃。我們可以想到,把陣列分割成兩份,並且和相等,那麼每乙份的和是總和的一半。那麼問題就可以轉化為找到一組數,使得他們的和逼近sum 2,最後判斷最大的和是否等於sum 2,如果是則說明存在這樣的組合,也就是存在子集。其和為sum 2,當然了另乙個集合的和...

LeetCode416 分割等和子集

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

LeetCode 416 分割等和子集

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