【LeetCode】逐步求和得到正数的最小值 Java 题解
题目描述
给你一个整数数组 nums 。你可以选定任意的 正数 startValue 作为初始值。
你需要从左到右遍历 nums 数组,并将 startValue 依次累加上 nums 数组中的值。
请你在确保累加和始终大于等于 1 的前提下,选出一个最小的 正数 作为 startValue 。
复制代码
思路分析
今天的的算法题目数组题目,题目要求数组从左到右累加求和,确保累加和始终大于等于 1。经过分析,我们可以先遍历整体数组,找出最小的值,如果都是正数,那答案就是 1。如果有负数,那我们取绝对值之后在加上 1。确定左右区间,我们可以使用二分查找算法,来判断是否满足需求。这里需要注意的是,取右端点的时候,需要计算上数组的长度,确保又端点满足条件。具体实现代码如下,供参考。
通过代码
复制代码
总结
二分查找的算法的时间复杂度是 O(n log n), 空间复杂度是 O(1)
坚持算法每日一题,加油!
版权声明: 本文为 InfoQ 作者【Albert】的原创文章。
原文链接:【http://xie.infoq.cn/article/b8e3a27ea7f8858d9f6be4d88】。文章转载请联系作者。
评论