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;
    }
}
相关推荐
田梓燊4 分钟前
算法题学习题单
学习·算法
Sunsets_Red9 分钟前
乘法逆元的 exgcd 求法
c++·学习·数学·算法·c#·密码学·信息学竞赛
季明洵10 分钟前
预处理详解(上)
linux·c语言·数据结构·预定义
阿Y加油吧11 分钟前
力扣打卡——接雨水、无重复字符的最长子串
算法·leetcode·职场和发展
handler0130 分钟前
算法:字符串哈希
c语言·数据结构·c++·笔记·算法·哈希算法·散列表
琪蘤34 分钟前
点胶换阀高度标定计算说明
算法
handler0139 分钟前
算法:查并集
开发语言·数据结构·c++·笔记·学习·算法·c
plus4s39 分钟前
3月19日(进阶10)
算法
雨落在了我的手上40 分钟前
C语言之数据结构初见篇(5):单链表的介绍(1)
c语言·开发语言·数据结构