Compute the Minimum Value to Get Positive Step by Step Sum using
- 时间:2020-09-09 14:04:20
- 分类:网络文摘
- 阅读:102 次
Given an array of integers nums, you start with an initial positive value startValue. In each iteration, you calculate the step by step sum of startValue plus elements in nums (from left to right). Return the minimum positive value of startValue such that the step by step sum is never less than 1.
Example 1:
Input: nums = [-3,2,-3,4,2]Output: 5
Explanation: If you choose startValue = 4, in the third iteration your step by step sum is less than 1.step by step sum startValue = 4 | startValue = 5 | nums (4 -3 ) = 1 | (5 -3 ) = 2 | -3 (1 +2 ) = 3 | (2 +2 ) = 4 | 2 (3 -3 ) = 0 | (4 -3 ) = 1 | -3 (0 +4 ) = 4 | (1 +4 ) = 5 | 4 (4 +2 ) = 6 | (5 +2 ) = 7 | 2Example 2:
Input: nums = [1,2]
Output: 1
Explanation: Minimum start value should be positive.Example 3:
Input: nums = [1,-2,-3]
Output: 5Constraints:
1 <= nums.length <= 100
-100 <= nums[i] <= 100Hints:
Find the minimum prefix sum.
Prefix Sum Algorithm
We can compute the minimal prefix sum using O(N) loop. The final answer is -minSum + 1.
1 2 3 4 5 6 7 8 9 10 11 | class Solution { public: int minStartValue(vector<int>& nums) { int sum = 0, minsum = 0; for (const auto &n: nums) { sum += n; minsum = min(minsum, sum); } return -minsum + 1; } }; |
class Solution {
public:
int minStartValue(vector<int>& nums) {
int sum = 0, minsum = 0;
for (const auto &n: nums) {
sum += n;
minsum = min(minsum, sum);
}
return -minsum + 1;
}
};We can also use the std::accumulate to do this:
1 2 3 4 5 6 7 8 9 10 11 | class Solution { public: int minStartValue(vector<int>& nums) { int minsum = 0; std::accumulate(begin(nums), end(nums), 0, [&](auto &a, auto &b) { minsum = min(minsum, a + b); return a + b; }); return -minsum + 1; } }; |
class Solution {
public:
int minStartValue(vector<int>& nums) {
int minsum = 0;
std::accumulate(begin(nums), end(nums), 0, [&](auto &a, auto &b) {
minsum = min(minsum, a + b);
return a + b;
});
return -minsum + 1;
}
};–EOF (The Ultimate Computing & Technology Blog) —
推荐阅读:鲁共公择言原文及翻译 鲁仲连义不帝秦原文及翻译 触龙说赵太后原文及翻译 庄辛论幸臣原文及翻译 赵威后问齐使原文及翻译 冯谖客孟尝君原文及翻译 齐宣王见颜斶/颜斶说齐王原文及翻译 邹忌讽齐王纳谏原文及翻译 范雎说秦王原文及翻译 三个博客写作技巧坚持了10年 养活了他一家子!
- 评论列表
-
- 添加评论