描述
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 | 2
Example 2:
Input: nums = [1,2]
Output: 1
Explanation: Minimum start value should be positive.
Example 3:
Input: nums = [1,-2,-3]
Output: 5
Note:
1 <= nums.length <= 100
-100 <= nums[i] <= 100
解析
根据题意,要想找到使每次列表值累加和不小于 1 的最小值,换言之就是找出列表中子数组累加和的最小值,然后取反加一即可。
解答
class Solution(object):
def minStartValue(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
result = 0
tmp = 0
for i in range(len(nums)):
tmp = tmp + nums[i]
result = min(result, tmp)
return abs(result)+1
运行结果
Runtime: 20 ms, faster than 79.56% of Python online submissions for Minimum Value to Get Positive Step by Step Sum.
Memory Usage: 12.7 MB, less than 71.82% of Python online submissions for Minimum Value to Get Positive Step by Step Sum.
每日格言:人生最大遗憾莫过于错误坚持和轻易放弃