Skip to content

Commit c22c6f5

Browse files
authored
Create 1049.Last-Stone-Weight-II_v2.cpp
1 parent 78fbabd commit c22c6f5

File tree

1 file changed

+30
-0
lines changed

1 file changed

+30
-0
lines changed
Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,30 @@
1+
class Solution {
2+
public:
3+
int lastStoneWeightII(vector<int>& stones)
4+
{
5+
int sum = accumulate(stones.begin(), stones.end(), 0);
6+
vector<int>dp(2*sum+2, false);
7+
int offset = sum;
8+
9+
dp[stones[0]+offset] = 1;
10+
dp[-stones[0]+offset] = 1;
11+
12+
for (int i=1; i<stones.size(); i++)
13+
{
14+
vector<int>dp2(2*sum+2, false);
15+
for (int s = -sum; s<= sum; s++)
16+
{
17+
if (s-stones[i] >= -sum && s-stones[i] <= sum)
18+
dp2[s+offset] = dp2[s+offset] || dp[s-stones[i]+offset];
19+
if (s+stones[i] >= -sum && s+stones[i] <= sum)
20+
dp2[s+offset] = dp2[s+offset] || dp[s+stones[i]+offset];
21+
}
22+
dp = std::move(dp2);
23+
}
24+
25+
for (int s = 0; s<=sum; s++)
26+
if (dp[s+offset])
27+
return s;
28+
return 0;
29+
}
30+
};

0 commit comments

Comments
 (0)