arrays - 给定一个数字数组,找到一个数字开头,使得总和永远不会为负
问题描述
给定一个整数数组,找到最小的数字 X 开始,这样将数组的元素添加到 X 中,总和总是大于 0
如果给定数组是 {-2, 3, 1, -5} 例如,在上面的数组中,X 应该是 4
解释:如果我们从 4 开始,然后加上第一个数字 -2,数组和变为 4 + (-2) = 2(即 >0) 现在将下一个元素 3 添加到当前和即 2,2+ 3 = 5 (>0)将下一个元素 1 添加到新的总和 5 得到,5 + 1 = 6 (>0)将最后一个元素 -5 添加到新的总和 6 得到 6 + (-5) = 1,这再次更大比零。
给定一个整数数组,如何找到最小的数 X?
解决方案
查找给定数组的最小累积和。
需要的结果是1 - MinC
A = [-2, 3, 1, -5]
CSum = 0
MinC = 10000000000
for x in A:
CSum += x
MinC = min(MinC, CSum)
Addend = 1 - MinC
print(Addend)
>>> 4
推荐阅读
- javascript - 如何在此 if 语句中不返回任何内容而不是空格?
- javascript - 如何在不更新列表兄弟的情况下更新映射列表中的值?
- c++ - std::async 执行顺序保证
- python - 将深度反投影到原始网格上
- swift - SwiftUI - 将删除操作(带索引)添加到警报按钮
- python - GPUtil.showUtilization 突然不起作用
- reactjs - 在 .env 中隐藏我的 MongoURI 变量会破坏我在 Heroku 上的应用
- firebase - Flutter Firebase - 未能正确删除经过 Google 身份验证的用户
- c# - .Net Core Worker Service 在作为 Windows 服务运行时找不到 log4net.config
- javascript - 获取简单 GET 请求的 NS_BINDING_ABORTED 错误