题目链接:
贪心
思路:
要保证所有的累加和
a
c
c
S
u
m
accSum
accSum 满足
a
c
c
S
u
m
+
s
t
a
r
t
V
a
l
u
e
≥
1
accSum+startValue≥1
accSum+startValue≥1,只需保证累加和的最小值
a
c
c
S
u
m
M
i
n
accSumMin
accSumMin 满足
a
c
c
S
u
m
M
i
n
+
s
t
a
r
t
V
a
l
u
e
≥
1
accSumMin+startValue≥1
accSumMin+startValue≥1,那么
s
t
a
r
t
V
a
l
u
e
startValue
startValue 的最小值即可取
−
a
c
c
S
u
m
M
i
n
+
1
−accSumMin+1
−accSumMin+1。
class Solution {
public:
int minStartValue(vector<int>& nums) {
int accSum = 0, accSumMin = 0;
for (int num : nums) {
accSum += num;
accSumMin = min(accSumMin, accSum);
}
return -accSumMin + 1;
}
};