53. Maximum Subarray
2016-06-15 01:04
375 查看
使用分治法来解题。
(1)只有0个元素或者1个元素 则直接返回
(2)求出middle位置 最大值 要么在middle左边 要么右边 要么两边都有 返回三种解法的最大值 则为最大值
(1)只有0个元素或者1个元素 则直接返回
(2)求出middle位置 最大值 要么在middle左边 要么右边 要么两边都有 返回三种解法的最大值 则为最大值
class Solution { private: int maxSub(vector<int>&nums,int left,int right) { if(left==right) return nums[left]; int middle=(left+right)/2; int leftmax=maxSub(nums,left,middle); int rightmax=maxSub(nums,middle+1,right); int leftv=nums[middle]; int rightv=nums[middle+1]; int temp=0; for(int i=middle;i>=left;i--) { temp+=nums[i]; if(temp>leftv) leftv=temp; } temp=0; for(int i=middle+1;i<=right;i++) { temp+=nums[i]; if(temp>rightv) rightv=temp; } return max(leftmax,max(rightmax,(leftv+rightv))); } public: int maxSubArray(vector<int>& nums) { if(nums.size()==0) return 0; else return maxSub(nums,0,nums.size()-1); } };
相关文章推荐
- iOS多线程_获取线程队列执行完毕的信号
- (?)企业部分之高可用集群(1)
- Android Studio开发JNI - 第一个JNI程序
- [LeetCode] Rearrange String k Distance Apart 按距离为k隔离重排字符串
- 【翻译】Ext JS 6.2 早期访问版本发布
- 微信公众号资料整理
- 递归算法
- 鼠标双击范围基于Win7
- Android应用开发环境的搭建和使用
- Linux read/write fread/fwrite两者区别
- UIwebView的使用,把网页以UIView的形式展示出来
- 【翻译】Ext JS 6.2 早期访问版本发布
- 【翻译】Ext JS 6.2 早期访问版本发布
- 【翻译】Ext JS 6.2 早期访问版本发布
- Python学习笔记(五)
- 一个屌丝程序猿的人生(二十五)
- Linux目录结构
- 即时通讯(IM-instant messager)
- asp.net 连接oracle 数据库-OracleClient使用
- js数组去重