一个整形序列arr={1, -1, -2, 2, 3, 4,-9, -5},数字有正,有负数,求他的最大的连续子串和?

O(n)解法思路:
(1)从左到右,从数组中第一个数开始加和,arr中的每一个数记做arr[i](i从1开始),max初始值为0
(2)其实Sn=Sn-1+arr[n],如果Sn<arr[n]则Sn=arr[n]
(3)总是判断sum是否大于max,如果大于则max=sum

下面是整个思路的运算过程:

S1=1+0 >arr1      则S1=1         ->  max<s1,则max=s1=1
S2=S1+arr2=0>arr2 则S2=0         ->  max>s2, max不变 max=1
S3=S2+arr3=-2=arr3则S3=-2        ->  max>s3, max不变 max=1
S4=S3+arr4=0<arr4 则s4=arr4=2    ->  max<s4, max=s4=2
s5=s4+arr5=5>arr5 则s5=5         ->  max<s5, max=s5=5
s6=s5+arr6=9>arr6 则s6=9         ->  max<s6, max=s6=9
s7=s6+arr7=0>arr7 则s7=0         ->  max>s7, max不变 max=9
s8=s6+arr7=arr7   则s8=-5        ->  max>s8, max不变 max=9

代码实现(Java):

public class ComputeSeqSumPlus {

public static void main(String[] args) {int[] arr = { 4, 3, 4, -1, -9, 100 };int max = 0;int sum = 0;for (int i = 0; i < arr.length; i++) {

            sum += arr[i];if (sum < arr[i]) {

                sum = arr[i];            }if (sum > max) {                max = sum;            }        }        System.out.println("The max sum is : " + max);

    }

}

转载于:https://www.cnblogs.com/ChrisWang/articles/1595612.html

最大的连续子段和的O(n)解法相关推荐

  1. 解题报告:SP1043 GSS4 - Can you answer these queries III(GSS线段树八部曲之三)(区间最大连续子段和)

    要注意输入的数据有坑,x可能大于y- 我们可以模块化编程,使得整个代码井井有条 函数可以重名,只要参数不一样就行. 来源 yxc老师的上课板书 然后就是简单的代码了 #include<iostr ...

  2. CodeForces - 1486D Max Median(二分+最长连续子段和)

    题目链接:点击查看 题目大意:给出一个长度为 nnn 的数列,现在从长度至少为 kkk 的连续子段中,找到最大的中位数 题目分析:做过平均数的模型:POJ - 2018 Best Cow Fences ...

  3. CodeForces - 1373D Maximum Sum on Even Positions(最大连续子段和)

    题目链接:点击查看 题目大意:给出一个长度为 n 的数列 a ,允许选择一个子串进行翻转,问最后可以得到的,偶数位置的数字之和的最大值是多少 题目分析:模拟几次不难发现,我们翻转的长度必须是偶数才能有 ...

  4. CodeForces - 1359D Yet Another Yet Another Task(最大连续子段和)

    题目链接:点击查看 题目大意:选出一个连续子段和后,会减去相应区间内的最大值,问在此情况下的最大连续子段和是多少 题目分析:因为每个元素的取值很小,所以可以枚举每个元素作为最大值,然后依次求最大连续子 ...

  5. POJ - 2018 Best Cow Fences(二分+最长连续子段和)

    题目链接:点击查看 题目大意:给出n个正整数,求一个平均数最大的.长度不小于L的连续子段 题目分析:因为这个题目的答案满足二分的性质,也就是若二分的平均数小于答案,则更小的平均数肯定都满足答案(因为这 ...

  6. POJ - 1050 To the Max(最大连续子段和,线性dp)

    题目链接:点击查看 题目大意:给出一个n*n的矩阵,每个点都有一个权值,现在要从中选取一个子矩阵要求权值和最大,问这个最大权值和是多少 题目分析:因为是要求子矩阵的权值和最大的问题,我们可以直接维护一 ...

  7. PAT (Advanced Level) 1007 Maximum Subsequence Sum(最大连续子段和)

    题目链接:点击查看 题目大意:求最大连续子段和,并输出其第一项和最后一项,若结果为负数,输出0,以及数组的第一项和最后一项 题目分析:简单动态规划,帮我复习了一下这种题目该怎么做..动态规划一直是我的 ...

  8. 寻找指定长度以内的最短连续子段和

    寻找指定长度以内的最短连续子段和 沟里学姐的残忍 ★实验任务 现在沟里学姐有一把激光刀,现在有 n 个人站在一排(每隔一米站一个人), 沟里对每个人都有一个仇恨值 ai (仇恨值可正可负,因为有些人可 ...

  9. 严格递增最大连续子段(思维)

    严格递增最大连续子段 时间限制: 1 Sec  内存限制: 128 MB 提交: 88  解决: 8 [提交][状态][讨论版] 题目描述 给定n个非负元素,你最多可以改变一个元素为任意整数.问可以得 ...

最新文章

  1. 强大的vim配置文件,让编程更随意
  2. python简单小游戏实现_python基础--小游戏简单实现
  3. NULL和唯一约束UNIQUE的对应关系
  4. 【ROM修改教程】添加高级电源重启菜单(安卓4.0.4官方ROM)
  5. halcon create_ocr_class_svm 使用SVM分类器创建OCR分类器
  6. 熵值法确定权重(matlab附代码)
  7. XML读取信息并显示
  8. Redis 和 Memcached的对比
  9. layui date插件设置不能跨月查询
  10. python xlwt_Python模块xlwt对excel进行写入操作
  11. 分享一款在线转换工具,轻松将PDF转换成JPG格式
  12. 利用官方预训练模型快速计算Inception Score和FID
  13. 财务分析中三张财务报表计算公式
  14. oracle12c安全补丁包,Oracle 12c 及以上版本补丁更新说明及下载方法
  15. 暖通工程师有几个级别,以及注册暖通工程师挂靠价格
  16. HUST1005 渊子赛马【枚举】
  17. docker查看mysql镜像版本_Docker 查看镜像信息
  18. 【嵌入式】STM32实现SPI双机通信的一些细节(2)片选总结
  19. 高博SLAM十四讲书本程序学习——第3讲 三维空间刚体运动
  20. No2-Java入门

热门文章

  1. oracle表空间总结,Oracle操作用户和表空间的总结
  2. git checkoutbranch 回退到某个版本进行修改
  3. git checkout
  4. java 日期和时间
  5. opencv-api pyrDown
  6. Linux bash 命令
  7. CentOS7没有ifconfig命令的解决方法
  8. debian9.4网络配置及永久静态默认路由
  9. hl3150cdn打印不了照片_揭秘:薇娅力荐国产品牌极印,照片打印机爆卖的秘密
  10. ​vSphere 性能优化方法总结