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 相关文章推荐
第七节--类的静态成员
Nov 16 PHP
PHP脚本中include文件出错解决方法
Nov 20 PHP
php 结果集的分页实现代码
Mar 10 PHP
PHP中for与foreach的区别分析
Mar 09 PHP
浅析PHP程序设计中的MVC编程思想
Jul 28 PHP
PHP程序员不应该忽略的3点
Oct 09 PHP
PHP设置头信息及取得返回头信息的方法
Jan 25 PHP
php获取远程图片并下载保存到本地的方法分析
Oct 08 PHP
Yii2中hasOne、hasMany及多对多关联查询的用法详解
Feb 15 PHP
php 删除指定文件夹的实例讲解
Jul 25 PHP
PHP设计模式之装饰器模式实例详解
Feb 07 PHP
原生php实现excel文件读写的方法分析
Apr 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 URL地址获取函数代码(端口等) 推荐
2010/05/15 PHP
php基于dom实现读取图书xml格式数据的方法
2017/02/03 PHP
PHP测试框架PHPUnit组织测试操作示例
2018/05/28 PHP
JavaScript 学习小结(适合新手参考)
2009/07/30 Javascript
javascript中的一些注意事项 更新中
2010/12/06 Javascript
浅谈javascript的原型继承
2012/07/25 Javascript
JS+CSS实现简易实用的滑动门菜单效果
2015/09/18 Javascript
浅析JavaScript中的变量复制、参数传递和作用域链
2016/01/13 Javascript
浅谈JavaScript 执行环境、作用域及垃圾回收
2016/05/31 Javascript
浅谈javascript中的事件冒泡和事件捕获
2016/12/28 Javascript
3分钟快速搭建nodejs本地服务器方法运行测试html/js
2017/04/01 NodeJs
jQuery+ajax实现修改密码验证功能实例详解
2017/07/06 jQuery
浅谈vue.js中v-for循环渲染
2017/07/26 Javascript
vue使用mint-ui实现下拉刷新和无限滚动的示例代码
2017/11/06 Javascript
js实现敏感词过滤算法及实现逻辑
2018/07/24 Javascript
详解Vue基于vue-quill-editor富文本编辑器使用心得
2019/01/03 Javascript
JS实现获取当前所在周的周六、周日示例分析
2019/05/11 Javascript
小程序中this.setData的使用和注意事项
2019/08/28 Javascript
浅谈Vue为什么不能检测数组变动
2019/10/14 Javascript
python提示No module named images的解决方法
2014/09/29 Python
python sort、sorted高级排序技巧
2014/11/21 Python
python实现人脸识别代码
2017/11/08 Python
python2.7+selenium2实现淘宝滑块自动认证功能
2018/02/24 Python
Pycharm取消py脚本中SQL识别的方法
2018/11/29 Python
Python3.5面向对象编程图文与实例详解
2019/04/24 Python
Python实现Singleton模式的方式详解
2019/08/08 Python
python实现大学人员管理系统
2019/10/25 Python
Python通过TensorFLow进行线性模型训练原理与实现方法详解
2020/01/15 Python
Pycharm如何自动生成头文件注释
2020/11/14 Python
施华洛世奇西班牙官网:SWAROVSKI西班牙
2019/06/06 全球购物
平面设计师岗位职责
2014/09/18 职场文书
学生上课看漫画的检讨书
2014/09/26 职场文书
2015年社区矫正工作总结
2015/04/21 职场文书
2015年秋季运动会加油稿
2015/07/22 职场文书
2019朋友新婚祝福语精选
2019/10/10 职场文书
致男子1500米运动员的广播稿
2019/11/08 职场文书