PHP实现求连续子数组最大和问题2种解决方法


Posted in PHP onDecember 26, 2017

本文实例讲述了PHP实现求连续子数组最大和问题2种解决方法。分享给大家供大家参考,具体如下:

问题描述

求子数组的最大和

题目描述:

输入一个整形数组,数组里有正数也有负数。
数组中连续的一个或多个整数组成一个子数组,每个子数组都有一个和。
求所有子数组的和的最大值。要求时间复杂度为O(n)

关于连续子数组最大和这个问题,有两种解法,一种是动态规划

解法如下:

function getMaxSubSum($arr){
  $curSum = $arr[0];
  $maxSum = $arr[0];
  for($i = 1; $i < count($arr); $i++){
    if($curSum > 0) $curSum += $arr[$i];
    else $curSum = $arr[$i];
    if($curSum > $maxSum) $maxSum = $curSum;
  }
  return $maxSum;
}

还有一种是扫描法

function getMaxSubSum($arr){
  $curSum = 0;
  $maxSum = 0;
  for($i = 0; $i < count($arr); $i++ ){
    $curSum += $arr[$i];
    if($curSum <= 0) $curSum = 0;
    if($curSum > $maxSum) $maxSum = $curSum;
  }
  if($maxSum == 0){
    $maxSum = $arr[0];
    for($i = 1; $i < count($arr); $i++){
      if($maxSum < $arr[$i] ) $maxSum = $arr[$i];
    }
  }
  return $maxSum;
}

希望本文所述对大家PHP程序设计有所帮助。

PHP 相关文章推荐
php切割页面div内容的实现代码分享
Jul 31 PHP
PHP对象相互引用的内存溢出实例分析
Aug 28 PHP
php命令行用法入门实例教程
Oct 27 PHP
php获取发送给用户的header信息的方法
Mar 16 PHP
正确的PHP匹配UTF-8中文的正则表达式
May 13 PHP
功能强大的PHP图片处理类(水印、透明度、旋转)
Oct 21 PHP
PHP汉字转换拼音的函数代码
Dec 30 PHP
PHP实现搜索地理位置及计算两点地理位置间距离的实例
Jan 08 PHP
PHP类相关知识点实例总结
Sep 28 PHP
Laravel实现autoload方法详解
May 07 PHP
php解压缩zip和rar压缩包文件的方法
Jul 10 PHP
php实现的生成排列算法示例
Jul 25 PHP
PHP基于双向链表与排序操作实现的会员排名功能示例
Dec 26 #PHP
thinkphp5 URL和路由的功能详解与实例
Dec 26 #PHP
php-msf源码详解
Dec 25 #PHP
关于 Laravel Redis 多个进程同时取队列问题详解
Dec 25 #PHP
源码分析 Laravel 重复执行同一个队列任务的原因
Dec 25 #PHP
浅析PHP中的闭包和匿名函数
Dec 25 #PHP
thinkphp5 加载静态资源路径与常量的方法
Dec 24 #PHP
You might like
php插入中文到sqlserver 2008里出现乱码的解决办法分享
2012/07/19 PHP
php中动态修改ini配置
2014/10/14 PHP
一个很简单的办法实现TD的加亮效果.
2006/06/29 Javascript
JS 常用校验函数
2009/03/26 Javascript
jquery操作select大全
2014/04/25 Javascript
js使用循环清空某个div中的input标签值
2014/09/29 Javascript
Node.js 制作实时多人游戏框架
2015/01/08 Javascript
js中split和replace的用法实例
2015/02/28 Javascript
Node.js连接postgreSQL并进行数据操作
2016/12/18 Javascript
jQuery获取选中单选按钮radio的值
2016/12/27 Javascript
js实现3D图片环展示效果
2017/03/09 Javascript
Vue中的字符串模板的使用
2018/05/17 Javascript
Echart折线图手柄触发事件示例详解
2018/12/16 Javascript
js动态获取时间的方法分析
2019/08/02 Javascript
微信小程序官方动态自定义底部tabBar的例子
2019/09/04 Javascript
[00:12]2018DOTA2亚洲邀请赛SOLO赛 MidOne是否中单第一人?
2018/04/05 DOTA
[52:20]DOTA2-DPC中国联赛正赛 SAG vs XGBO3 第一场 3月5日
2021/03/11 DOTA
python正则表达式中的括号匹配问题
2014/12/14 Python
pycharm安装和首次使用教程
2018/08/27 Python
Python两个字典键同值相加的几种方法
2019/03/05 Python
Python pandas DataFrame操作的实现代码
2019/06/21 Python
详解python内置常用高阶函数(列出了5个常用的)
2020/02/21 Python
python画环形图的方法
2020/03/25 Python
Python闭包与装饰器原理及实例解析
2020/04/30 Python
Python3基于plotly模块保存图片表格
2020/08/03 Python
python计算auc的方法
2020/09/09 Python
html5 canvas fillRect坐标和大小的问题解决方法
2014/03/26 HTML / CSS
美国汽车轮胎和轮毂销售网站:Tire Rack
2018/01/11 全球购物
真正的英国宝藏:Mappin & Webb
2019/05/05 全球购物
澳大利亚第一旅行车和房车配件店:Caravan RV Camping
2020/12/26 全球购物
Python如何实现单例模式
2016/06/03 面试题
大学生预备党员自我评价分享
2013/11/16 职场文书
工地标语大全
2014/06/18 职场文书
护理学院专科毕业生求职信
2014/06/28 职场文书
2015年求职自荐信范文
2015/03/04 职场文书
党员证明信
2015/06/19 职场文书