😊博主目前也在学习,有错误欢迎指正😊
🌈保持热爱 奔赴星海🌈
一、题目
1、题目描述
给你一个整数数组 nums 。你可以选定任意的 正数 startValue 作为初始值。
你需要从左到右遍历 nums 数组,并将 startValue 依次累加上 nums 数组中的值。
请你在确保累加和始终大于等于 1 的前提下,选出一个最小的 正数 作为 startValue 。
2、基础框架
- Java版本框架代码如下:
class Solution {
public int minStartValue(int[] nums) {
}
}
3、原题链接
二、解题报告
1、思路分析
(1)算出数组前缀和的最小值,如果最小值大于零, startValue 等于一即可,如果小于零,只需要让最小值加上 startValue 后变为一即可,所以 startValue 等于1- startValue 。
2、代码详解
class Solution {
public int minStartValue(int[] nums) {
int startValue = nums[0];
for(int i = 1;i < nums.length;i++) {
nums[i] += nums[i - 1];
startValue = Math.min(startValue,nums[i]);
}
return startValue >0 ? 1:1 - startValue;
}
}
三、本题知识
前缀和