题目来源:
leetcode题目,网址:1413. 逐步求和得到正数的最小值 - 力扣(LeetCode)
解题思路:
逐个求和,获得迭代过程中产生的最小数,若该数大于等于 0 ,返回 -1 ,否则返回该数的绝对值与 1 之和。
解题代码:
class Solution {
public int minStartValue(int[] nums) {
int min=0;
int res=0;
for(int num:nums){
res+=num;
min=Math.min(min,res);
}
return -1*min+1;
}
}
总结:
官方题解给出了两种解法。第一种是贪心,一样的思路。第二种是二分查找,假设数组中元素的最小值为 min ,数组长度为 n ,则查找区间为[1,-n*min+1] ,区间不存在时返回 1 ,否则返回能满足要求的最小数字。
感觉该题基于贪心较好。