1413. Minimum Value to Get Positive Step by Step Sum

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

这道题说是从一个startValue开始,从左往右加数组里的数字,要保证每次加完这个值都不小于1。翻译过来就是,求这个数组的prefix sum最小的那个数,如果最小的就不小于1,那就return最小的startValue which is 1,如果最小的小于1,那就return (-sum) + 1

复制代码
class Solution {
    public int minStartValue(int[] nums) {
        int min = Integer.MAX_VALUE;
        int sum = 0;
        for (int num : nums) {
            sum += num;
            min = Math.min(min, sum);
        }
        return min >= 1 ? 1 : 1 - min;
    }
}
相关推荐
前端小L18 小时前
双指针专题(九):谁是窗口里的老大?——「滑动窗口最大值」
javascript·算法·双指针与滑动窗口
CAU界编程小白18 小时前
Linux系统编程系列之模拟文件操作
linux·算法
萤虫之光18 小时前
有序数组中的单一元素(一)
数据结构·算法
颜酱18 小时前
从经典问题入手,吃透动态规划核心(DP五部曲实战)
前端·javascript·算法
WBluuue19 小时前
AtCoder Beginner Contest 438(ABCDEF)
c++·算法
Murphy_3119 小时前
从根上了解一下复指数
算法
Run_Teenage19 小时前
Linux:理解IO,重定向
linux·运维·算法
你撅嘴真丑19 小时前
素数对 与 不吉利日期
算法
多米Domi01119 小时前
0x3f 第20天 三更24-32 hot100子串
java·python·算法·leetcode·动态规划
wzfj1234519 小时前
Opaque Pointer / Incomplete Type
c++·算法·c