1413. 逐步求和得到正数的最小值

题目:

给你一个整数数组 nums 。你可以选定任意的 正数 startValue 作为初始值。

你需要从左到右遍历 nums 数组,并将 startValue 依次累加上 nums 数组中的值。

请你在确保累加和始终大于等于 1 的前提下,选出一个最小的 正数 作为 startValue 。


示例 1:

输入:nums = [-3,2,-3,4,2]
输出:5
解释:如果你选择 startValue = 4,在第三次累加时,和小于 1 。
                累加求和
                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


示例 2:

输入:nums = [1,2]
输出:1
解释:最小的 startValue 需要是正数。


示例 3:

输入:nums = [1,-2,-3]
输出:5


提示:

1 <= nums.length <= 100
-100 <= nums[i] <= 100


来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/minimum-value-to-get-positive-step-by-step-sum
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。


思路:

为了保证累加和始终大于等于1,则需要找到最小的累加和,只要其不小于1即可,遍历计算前缀和并维护最小累加和,最后分类讨论即可。


代码:

class Solution {
public:int minStartValue(vector<int>& nums) {int sum = 0;int minSum = INT_MAX;for (const int x: nums) {sum += x;minSum = min(minSum, sum);}/*// 如果最小前缀和大于等于0,则初始值最小【正数】为1if (minSum >= 0) {return 1;}// 如果最小为负数,则只需要使其等于1即可return 1 - minSum;*/return max(1 - minSum, 1);}
};

入门力扣自学笔记118 C++ (题目编号1413)相关推荐

  1. 入门力扣自学笔记52 C++ (题目编号929)

    929. 独特的电子邮件地址 题目: 每个 有效电子邮件地址 都由一个 本地名 和一个 域名 组成,以 '@' 符号分隔.除小写字母之外,电子邮件地址还可以含有一个或多个 '.' 或 '+' . 例如 ...

  2. 入门力扣自学笔记150 C++ (题目编号670)

    670. 最大交换 题目: 给定一个非负整数,你至多可以交换一次数字中的任意两位.返回你能得到的最大值. 示例 1 : 输入: 2736 输出: 7236 解释: 交换数字2和数字7. 示例 2 : ...

  3. 20210325:力扣递归,回溯类型题目合集

    力扣递归,回溯类型题目合集 题目 思路与算法 代码实现 写在最后 题目 子集 2. 90. 子集 II 3. 40. 组合总和 II 4. 22. 括号生成 思路与算法 子集:注释的很详细,递归生成子 ...

  4. 力扣题目归类,顺序刷题不再难

    目录 介绍 前奏-基础篇 中篇-链表.树的相关操作 进阶-回溯.动态规划 脑筋急转弯 介绍 大家好,相信很多人都知道刷力扣的重要性,但是如果不能将题目很好的归类整理专一练习,而是东做一道西做一道,那么 ...

  5. 力扣刷题记录-回溯算法相关题目

    首先介绍一下回溯算法 回溯通常在递归函数中体现,本质也是一种暴力的搜索方法,但可以解决一些用for循环暴力解决不了的问题,其应用有: 1.组合问题: 例:1 2 3 4这些数中找出组合为2的组合,有1 ...

  6. 力扣数据库题目刷题日记

    一个准备秋招的菜鸟 此前已经在力扣上面刷过一些题目,从今天开始记录刷题 1. Day1 96/97题 难度:中等 解题思路 首先需要读懂题目的意思,必须要保证容量大于相同分数的人数的同时,选择最低的分 ...

  7. 教你创建电脑、手机同步的markdown云笔记--力扣刷题力荐!

    开篇先致歉 其他不谈,开篇必须先给各位读者道个歉,年后工作上比较忙,加上最近闲暇的时间都用来在力扣上刷算法题了,导致公众号断更有些严重啊.再加上年后将健身减重提上了日程,时间上就更显的捉襟见肘了. 不 ...

  8. 力扣- -正则表达式匹配

    力扣- -正则表达式匹配 文章目录 力扣- -正则表达式匹配 一.题目描述 二.分析 方法一:Dp函数 明确状态和选择 确定状态转译方程 确定base case 完整代码 方法二:Dp table 明 ...

  9. 力扣--- 滑动谜题

    力扣- 滑动谜题 文章目录 力扣--- 滑动谜题 一.题目描述 二.问题分析 三.代码 一.题目描述 二.问题分析 对于这种计算 最小步数的问题,我们就要敏感地想到 BFS 算法. 这个题目转化成 B ...

最新文章

  1. ad远程控制用户计算机,远程控制电脑|远程控制计算机|怎样远程控制电脑 - ManageEngine Remote Access Plus...
  2. javascript,继承,封装
  3. BZOJ4567 SCOI2016背单词(trie+贪心)
  4. 【搜索/推荐排序】FM,FFM,AFM,PNN,DeepFM:进行CTR和CVR预估
  5. Idea 创建 web.xml 文件
  6. 【分布式缓存系列】Redis实现分布式锁的正确姿势
  7. 合肥师范学院计算机与技术,合肥师范学院计算机科学与技术系JAVA复习提纲
  8. Python之旅Day6 模块应用
  9. RAID介绍及RAID5配置实例
  10. JSON 格式化成视图模式
  11. 苹果激活锁怎么解除?手把手教你关闭激活锁
  12. Android network基础知识 — IPv4和IPv6的区别
  13. 程序员面试必看32道经典逻辑推理题
  14. 坪效是传统超市的5倍以上!京东首家线下生鲜超市7FRESH开业
  15. Android开启指纹验证
  16. Codeforces C. Destroying Array
  17. 【网络】如何扫描局域网内所有设备的ip和mac地址
  18. Multisim高频电子线路2.7章LC谐振电路的仿真
  19. 嵌入式Qt开发环境搭建
  20. STM32F407控制 无刷直流电机和永磁同步电机

热门文章

  1. [附源码]Java计算机毕业设计SSM城市公交系统
  2. c语言嵌入式开发键盘,C语言嵌入式系统编程修炼之键盘操作篇
  3. Panasonic Lumix GH5: Tips, Tricks, and Techniques 松下Lumix GH5使用技巧 Lynda课程中文字幕
  4. 计算机毕业设计 SpringBoot+Vue作业帮课程管理系统 作业帮信息管理系统 作业帮试题管理系统
  5. opencv入门Vec3f
  6. iphone8 android传文件,如何从iPhone或Android将数据传输到新的iPhone 8
  7. bde oracle 商友的流程_怎么用BDE连接Oracle?(100分)
  8. 清差额征税和简易计税的适用情形
  9. 小程序input组件type=“nickname“获取不到微信昵称的值,解决方法
  10. dataTable 固定列