leetcode No53. Maximum Subarray
2016-07-28 16:46
330 查看
Question:
Find the contiguous subarray within an array (containing at least one number) which has the largest sum.For example, given the array
[−2,1,−3,4,−1,2,1,−5,4],
the contiguous subarray
[4,−1,2,1]has the largest sum =
6.
Algorithm:
Kadane算法,时间复杂度为O(n),将数组从左到右分割为若干子串,使得除了最后一个子串之外,其余子串的各元素之和小于0。代码中如果前一段子数组的和小于0,那么就丢弃它。
Accepted Code:
class Solution { public: int maxSubArray(vector<int>& nums) { int max_sub=0; int max_cur=0; int max_neg=0; //防止出现全为负数 int flag=0; //全为负数标志位 int first=0; //第一个负数 for(int i=0;i<nums.size();i++) { max_cur+=nums[i]; if(max_cur>max_sub) max_sub=max_cur; if(max_cur<0) max_cur=0; if(nums[i]>=0&&flag==0) flag=1; else if(nums[i]<0&&flag==0) { if(first==0) { first=1; max_neg=nums[i]; } else if(max_neg<nums[i]) max_neg=nums[i]; } } if(flag==0)return max_neg; return max_sub; } };
相关文章推荐
- CentOS关于quota的总结与实践
- 74. Search a 2D Matrix
- javascript eval和JSON之间的联系
- linux使用grep和find查找内容
- 分布式模式之Broker模式
- 让你的Python代码更加pythonic
- 【HEVC帧间预测论文】P1.4 Motion Vectors Merging: Low Complexity Prediction Unit Decision
- Centos 7 文件和目录管理
- 获取网络状态
- linux如何关闭selinux?
- jquery 取值赋值
- Linux wifi 破解
- php webservice服务端和客户端的实现
- Java基础面试题之Singleton模式
- 字符集
- Windows8.1打开程序报 api-ms-win-crt-heap-l1-1-0.dll 错误的解决办法
- 其它网页可以上网,IE浏览器打不开网页的解决办法
- 数学
- Cesium应用篇:3控件(5)CesiumInspector
- 详解web.xml中元素的加载顺序