博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[Leetcode] maximun subarray 最大子数组
阅读量:5265 次
发布时间:2019-06-14

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

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.

More practice:

If you have figured out the O(n) solution, try coding another solution using the divide and conquer approach, which is more subtle.

题意:给定由正负整数组成的数组,问和最大的子数组,返回和。
思路:这题和 、  类似。定义两个变量,一个维护目前的最大值maxValue,一个是之前元素值的最大值sum,当sum小于0时说明,若算上之前的数会是整体的最大值减小,所以舍弃。时间复杂度为O(n)。代码如下:
1 class Solution { 2 public: 3     int maxSubArray(int A[], int n)  4     { 5         if(n==0)    return 0; 6         int sum=0,maxValue=A[0]; 7         for(int i=0;i

方法二:分治。参考的博客。分治的思想类似二分搜索,首先将数组一分为二,分别找出左边和右边的最大子数组之和,然后从中间开始向左右分别扫描,求出的最大值分别和左右两边得到的最大值相比较,取最大值。

代码如下:

1 class Solution { 2 public: 3     int maxSubArray(int A[], int n)  4     { 5         if(n==0)    return 0; 6         return helper(A,0,n-1); 7     } 8  9     int helper(int A[],int left,int right)10     {11         if(left>=right) return A[left];12         int mid=(left+right)>>1;13         int lmx=helper(A,left,mid-1);14         int rmx=helper(A,mid+1,right);15 16         int mMax=A[mid],temp=mMax;17 18         //遍历左半端,19         for(int i=mid-1;i>=left;--i)20         {21             temp+=A[i];22             mMax=max(mMax,temp);23         }24         temp=mMax;  //向右25         for(int i=mid+1;i<=right;++i)26         {27             temp+=A[i];28             mMax=max(mMax,temp);29         }30 31         return max(mMax,max(lmx,rmx));32     }33 };

 

转载于:https://www.cnblogs.com/love-yh/p/7170966.html

你可能感兴趣的文章
反弹SHELL
查看>>
关闭Chrome浏览器的自动更新和升级提示
查看>>
移动、尺寸改变
查看>>
poj2255Tree Recovery【二叉树重构】
查看>>
tcpcopy 流量复制工具
查看>>
vue和react的区别
查看>>
第十一次作业
查看>>
负载均衡策略
查看>>
微信智能开放平台
查看>>
ArcGIS Engine 中的绘制与编辑
查看>>
Oracle--通配符、Escape转义字符、模糊查询语句
查看>>
c# 文件笔记
查看>>
第一页 - 工具的使用(webstorm)
查看>>
Linux 进程资源用量监控和按用户设置进程限制
查看>>
IE浏览器整页截屏程序(二)
查看>>
D3.js 之 d3-shap 简介(转)
查看>>
制作满天星空
查看>>
类和结构
查看>>
CSS3选择器(二)之属性选择器
查看>>
adidas crazylight 2018 performance analysis review
查看>>