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实现文件上传二法
Oct 09 PHP
同时提取多条新闻中的文本一例
Oct 09 PHP
SSI指令
Nov 25 PHP
PHP $_SERVER详解
Jan 16 PHP
一个很不错的PHP翻页类
Jun 01 PHP
PHP中对用户身份认证实现两种方法
Jun 04 PHP
如何在PHP中使用正则表达式进行查找替换
Jun 13 PHP
php结合mysql与mysqli扩展处理事务的方法
Jun 29 PHP
PHP会话控制实例分析
Dec 24 PHP
php实现微信公众平台发红包功能
Jun 14 PHP
php微信公众号开发之秒杀
Oct 20 PHP
thinkphp框架无限级栏目的排序功能实现方法示例
Mar 29 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 9 大缓存技术总结
2015/09/17 PHP
php格式化json函数示例代码
2016/05/12 PHP
实现laravel 插入操作日志到数据库的方法
2019/10/11 PHP
javascript新手语法小结
2008/06/15 Javascript
Web开发者必备的12款超赞jQuery插件
2010/12/03 Javascript
利用jQuery插件扩展识别浏览器内核与外壳的类型和版本的实现代码
2011/10/22 Javascript
jQuery-Easyui 1.2 实现多层菜单效果的代码
2012/01/13 Javascript
实现图片预加载的三大方法及优缺点分析
2014/11/19 Javascript
jQuery中html()方法用法实例
2014/12/25 Javascript
JS实现从表格中动态删除指定行的方法
2015/03/31 Javascript
简介JavaScript中的unshift()方法的使用
2015/06/09 Javascript
轻松学习jQuery插件EasyUI EasyUI实现树形网络基本操作(2)
2015/11/30 Javascript
基于JS实现新闻列表无缝向上滚动实例代码
2016/01/22 Javascript
AngularJS基础 ng-model 指令详解及示例代码
2016/08/02 Javascript
AngularJS动态加载模块和依赖的方法分析
2016/11/08 Javascript
js每隔两秒输出数组中的一项(实例)
2017/05/28 Javascript
webpack3+React 的配置全解
2017/08/21 Javascript
使用Vue自定义数字键盘组件(体验度极好)
2017/12/19 Javascript
Vue指令指令大全
2019/02/09 Javascript
JQuery样式操作、click事件以及索引值-选项卡应用示例
2019/05/14 jQuery
VUE实现密码验证与提示功能
2019/10/18 Javascript
[43:51]2018DOTA2亚洲邀请赛3月30日 小组赛B组 EG VS Secret
2018/03/31 DOTA
python模拟新浪微博登陆功能(新浪微博爬虫)
2013/12/24 Python
Python自动生产表情包
2017/03/17 Python
python+splinter实现12306网站刷票并自动购票流程
2018/09/25 Python
Python 通过requests实现腾讯新闻抓取爬虫的方法
2019/02/22 Python
django 实现手动存储文件到model的FileField
2020/03/30 Python
基于python计算滚动方差(标准差)talib和pd.rolling函数差异详解
2020/06/08 Python
Python脚本调试工具安装过程
2021/01/11 Python
css3实现可滑动跳转的分页插件示例
2014/05/08 HTML / CSS
华为旗下电子商务平台:华为商城
2016/08/06 全球购物
linux面试题参考答案(8)
2015/08/11 面试题
公司端午节活动方案
2014/02/04 职场文书
生产实习心得体会范文
2016/01/22 职场文书
JS + HTML 罗盘式时钟的实现
2021/05/21 Javascript
python如何利用cv2模块读取显示保存图片
2021/06/04 Python