Skip to content

Latest commit

 

History

History
145 lines (98 loc) · 3 KB

File metadata and controls

145 lines (98 loc) · 3 KB

中文文档

Description

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

 

Constraints:

  • 1 <= nums.length <= 100
  • -100 <= nums[i] <= 100

Solutions

Python3

class Solution:
    def minStartValue(self, nums: List[int]) -> int:
        s, t = 0, float('inf')
        for num in nums:
            s += num
            t = min(t, s)
        return max(1, 1 - t)

Java

class Solution {
    public int minStartValue(int[] nums) {
        int s = 0;
        int t = Integer.MAX_VALUE;
        for (int num : nums) {
            s += num;
            t = Math.min(t, s);
        }
        return Math.max(1, 1 - t);
    }
}

C++

class Solution {
public:
    int minStartValue(vector<int>& nums) {
        int s = 0, t = INT_MAX;
        for (int num : nums)
        {
            s += num;
            t = min(t, s);
        }
        return max(1, 1 - t);
    }
};

Go

func minStartValue(nums []int) int {
	s, t := 0, 10000
	for _, num := range nums {
		s += num
		if s < t {
			t = s
		}
	}
	if t < 0 {
		return 1 - t
	}
	return 1
}

...