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初学者头疼问题总结
Jul 08 PHP
汉字转化为拼音(php版)
Oct 09 PHP
php 清除网页病毒的方法
Dec 05 PHP
php设计模式 Proxy (代理模式)
Jun 26 PHP
Discuz批量替换帖子内容的方法(使用SQL更新数据库)
Jun 23 PHP
Yii框架中 find findAll 查找出制定的字段的方法对比
Sep 10 PHP
微信公众平台网页授权获取用户基本信息中授权回调域名设置的变动
Oct 21 PHP
php使用CURL不依赖COOKIEJAR获取COOKIE的方法
Jun 17 PHP
php中使用GD库做验证码
Mar 31 PHP
PHP+redis实现的悲观锁机制示例
Jun 12 PHP
PHP图像处理技术实例总结【绘图、水印、验证码、图像压缩】
Dec 08 PHP
零基础php编程好学吗
Oct 11 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 发送带附件邮件示例
2014/01/23 PHP
免费的ip数据库淘宝IP地址库简介和PHP调用实例
2014/04/08 PHP
php中socket的用法详解
2014/10/24 PHP
php面向对象中static静态属性与方法的内存位置分析
2015/02/08 PHP
php转换颜色为其反色的方法
2015/04/27 PHP
PHP使用PDO操作数据库的乱码问题解决方法
2016/04/08 PHP
PHP7扩展开发教程之Hello World实现方法示例
2017/08/03 PHP
PHP之认识(二)关于Traits的用法详解
2019/04/11 PHP
对采用动态原型方式无法展示继承机制得思考
2009/12/04 Javascript
javascript判断数组内是否重复的方法
2015/04/21 Javascript
深入探究使JavaScript动画流畅的一些方法
2015/06/30 Javascript
原生js获取iframe中dom元素--父子页面相互获取对方dom元素的方法
2016/08/05 Javascript
BootStrap实现手机端轮播图左右滑动事件
2016/10/13 Javascript
webpack4 升级迁移的实现
2018/09/12 Javascript
Vue-不允许嵌套式的渲染方法
2018/09/13 Javascript
JS实现小星星特效
2019/12/24 Javascript
js编写简易的计算器
2020/07/29 Javascript
element-ui中el-upload多文件一次性上传的实现
2020/12/02 Javascript
[06:24]DOTA2亚洲邀请赛小组赛第三日 TOP10精彩集锦
2015/02/01 DOTA
[04:19]DOTA2完美大师赛第四天精彩集锦
2017/11/26 DOTA
[46:12]完美世界DOTA2联赛循环赛 DM vs Matador BO2第一场 11.04
2020/11/04 DOTA
Python聚类算法之凝聚层次聚类实例分析
2015/11/20 Python
Python实现查找数组中任意第k大的数字算法示例
2019/01/23 Python
对python dataframe逻辑取值的方法详解
2019/01/30 Python
pytorch 使用单个GPU与多个GPU进行训练与测试的方法
2019/08/19 Python
python制作英语翻译小工具代码实例
2019/09/09 Python
手动安装python3.6的操作过程详解
2020/01/13 Python
浅谈pytorch中的BN层的注意事项
2020/06/23 Python
解析python 中/ 和 % 和 //(地板除)
2020/06/28 Python
使用HTML5加载音频和视频的实现代码
2020/11/30 HTML / CSS
博士学位自我鉴定范文
2013/12/26 职场文书
学校食品安全实施方案
2014/06/14 职场文书
尊老爱幼演讲稿
2014/09/04 职场文书
婚庆公司开业主持词
2015/06/30 职场文书
选择比努力更重要?这是长期以来对“努力”的最大误解
2019/07/12 职场文书
浅谈:电影《孔子》观后感(范文)
2019/10/14 职场文书