From a275c2cc553ad35e50d736e0630947a5bdf2d13e Mon Sep 17 00:00:00 2001 From: YukunJ Date: Tue, 30 Aug 2022 21:51:30 -0400 Subject: [PATCH] =?UTF-8?q?Update:=20=E6=B3=A8=E9=87=8A=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E4=BD=BF=E7=94=A8STL=E6=B1=82=E5=92=8C=E7=9A=84=E7=AE=80?= =?UTF-8?q?=E4=BE=BF=E5=B0=8F=E8=B4=B4=E5=A3=AB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- problems/0416.分割等和子集.md | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/problems/0416.分割等和子集.md b/problems/0416.分割等和子集.md index 9c90ea27..fa677da0 100644 --- a/problems/0416.分割等和子集.md +++ b/problems/0416.分割等和子集.md @@ -143,12 +143,17 @@ dp[j]的数值一定是小于等于j的。 class Solution { public: bool canPartition(vector& nums) { - // 使用标准库函数 便捷求和 - int sum = accumulate(nums.begin(), nums.end(), 0); + int sum = 0; + // dp[i]中的i表示背包内总和 // 题目中说:每个数组中的元素不会超过 100,数组的大小不会超过 200 // 总和不会大于20000,背包最大只需要其中一半,所以10001大小就可以了 vector dp(10001, 0); + for (int i = 0; i < nums.size(); i++) { + sum += nums[i]; + } + // 也可以使用库函数一步求和 + // int sum = accumulate(nums.begin(), nums.end(), 0); if (sum % 2 == 1) return false; int target = sum / 2;