LeetCode每日一题 416. 分割等和子集
生活随笔
收集整理的這篇文章主要介紹了
LeetCode每日一题 416. 分割等和子集
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
題目鏈接
思路
轉化成背包問題
class Solution { public:bool canPartition(vector<int>& nums) {if (nums.size() < 2) return false;int sum = 0;for (int &it : nums) {sum += it;}if (sum & 1) return false;sum /= 2;vector<int> dp(sum+1, false);dp[0] = true;for (int &it : nums) {for (int i = sum; i >= it; --i) {dp[i] |= dp[i - it];}}return dp[sum];} }; class Solution:def canPartition(self, nums: List[int]) -> bool:n = len(nums)if n < 2:return False;tot = sum(nums)if tot & 1:return False;mx = max(nums)tot //= 2;if mx > tot:return False;dp = [True] + [False] * totfor i in nums:for j in range(tot, i-1, -1):dp[j] |= dp[j-i]return dp[tot];總結
以上是生活随笔為你收集整理的LeetCode每日一题 416. 分割等和子集的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode每日一题 142. 环形
- 下一篇: LeetCode每日一题 530. 二叉