class Solution {
public:
int getSum(vector<int>& nums) {
int sum = 0;
for (auto& elem : nums) {
sum += elem;
}
return sum;
}
int lastStoneWeightII(vector<int>& stones) {
int sum = getSum(stones);
int target = sum / 2;
vector<int> dp(target + 1);
//initial
for (int j = 0; j <= target; j++) {
dp[j] = 0;
}
//iterate
for (int i = 0; i < stones.size(); i++) {
for (int j = target; j >= stones[i]; j--) {
dp[j] = max(dp[j], dp[j - stones[i]] + stones[i]);
}
}
return abs(sum - 2 * dp[target]);
}
};
LeetCode1049.最后一块石头的重量II
最新推荐文章于 2024-07-13 13:36:16 发布