博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Maximum Subarray - LeetCode
阅读量:5303 次
发布时间:2019-06-14

本文共 701 字,大约阅读时间需要 2 分钟。

目录

题目链接

注意点

  • 最大值有可能是正负数交替着出现

解法

解法一:一次遍历即可。当sum小于0的时候就重新开始求和,因为sum小于0再加上一个数字绝对不可能是max(即sum+nums[i] < nums[i])时间复杂度为O(n)

class Solution {public:    int maxSubArray(vector
& nums) { int max = nums[0],sum = nums[0],i,n = nums.size(); for(i = 1;i < n;i++) { if(sum < 0) // when sum < 0, sum + nums[i] < nums[i] { sum = nums[i]; } else { sum += nums[i]; } if(sum > max) { max = sum; } } return max; }};

874b0eb1gy1fzv8qdpk43j217k0kwt9t.jpg

小结

  • 这道题有更多的解法,但是O(n)应该是最快的了。想起来这个还是我大一的时候从ACM培训讲座上学到的

转载于:https://www.cnblogs.com/multhree/p/10352511.html

你可能感兴趣的文章
BZOJ4419: [Shoi2013]发微博
查看>>
【POJ】3090 Visible Lattice Points(欧拉函数)
查看>>
使用Ruby DBI模块
查看>>
[讨论]“传递式”的攻击思想<转LN>
查看>>
ABP理论学习之N层架构
查看>>
Python 常用代码片段
查看>>
【Python实战】使用Python连接Teradata数据库???未完成
查看>>
权限系统设计概述
查看>>
sharepoint list 文档上传和删除
查看>>
Standard deviation
查看>>
sql 查出一张表中重复的所有记录数据
查看>>
linux密码破解
查看>>
【COGS-2638】数列操作ψ 线段树
查看>>
委托和接口的逆变 和协变
查看>>
(一)Vmware搭建DPDK测试平台
查看>>
JAVA笔记16-生产者消费者问题
查看>>
回调函数
查看>>
ACM题目————滑雪
查看>>
谈谈国外网络干扰那些事
查看>>
C. Journey(dfs)
查看>>