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 06 PHP
利用php实现禁用IE和火狐的缓存问题
Dec 03 PHP
基于AppServ,XAMPP,WAMP配置php.ini去掉警告信息(NOTICE)的方法详解
May 07 PHP
php实现水仙花数的4个示例分享
Apr 08 PHP
php cookie名使用点号(句号)会被转换
Oct 23 PHP
PHP使用NuSOAP调用Web服务的方法
Jul 18 PHP
WordPress中获取所使用的模板的页面ID的简单方法
Dec 31 PHP
简单实现PHP留言板功能
Dec 21 PHP
PHP实现删除多重数组对象属性并重新赋值的方法
Jun 07 PHP
thinkPHP通用控制器实现方法示例
Nov 23 PHP
php intval函数用法总结
Apr 14 PHP
Thinkphp5框架异常处理操作实例分析
Jun 03 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 编写的日历
2006/10/09 PHP
php中变量及部分适用方法
2008/03/27 PHP
php基于jquery的ajax技术传递json数据简单实例
2016/04/15 PHP
php使用PDO下exec()函数查询执行后受影响行数的方法
2017/03/28 PHP
详解new function(){}和function(){}() 区别分析
2008/03/22 Javascript
Javascript 正则表达式实现为数字添加千位分隔符
2015/03/10 Javascript
JS实现仿QQ聊天窗口抖动特效
2015/05/10 Javascript
jQuery实现在列表的首行添加数据
2015/05/19 Javascript
jQuery遮罩层效果实例分析
2016/01/14 Javascript
JavaScript直播评论发弹幕切图功能点集合效果代码
2016/06/26 Javascript
jQuery实现的自定义弹出层效果实例详解
2016/09/04 Javascript
Vue.js实现一个SPA登录页面的过程【推荐】
2017/04/29 Javascript
详解node单线程实现高并发原理与node异步I/O
2017/09/21 Javascript
详解Vue-cli webpack移动端自动化构建rem问题
2018/04/07 Javascript
解决vue keep-alive 数据更新的问题
2018/09/21 Javascript
JavaScript 截取字符串代码实例
2019/09/05 Javascript
js 获取扫码枪输入数据的方法
2020/06/10 Javascript
js实现点击选项置顶动画效果
2020/08/25 Javascript
python实现的简单抽奖系统实例
2015/05/22 Python
Python中的anydbm模版和shelve模版使用指南
2015/07/09 Python
Python自动发邮件脚本
2017/03/31 Python
10 分钟快速入门 Python3的教程
2019/01/29 Python
在Python中,不用while和for循环遍历列表的实例
2019/02/20 Python
Python文本文件的合并操作方法代码实例
2020/03/31 Python
浅谈Python程序的错误:变量未定义
2020/06/02 Python
完美解决ARIMA模型中plot_acf画不出图的问题
2020/06/04 Python
Haggar官网:美国男装品牌
2020/02/16 全球购物
大专生自我鉴定范文
2013/10/01 职场文书
个人简历自我评价
2014/01/06 职场文书
汽车专业学生自我评价
2014/01/19 职场文书
三八红旗手事迹材料
2014/12/26 职场文书
索赔员岗位职责
2015/02/15 职场文书
家长高考寄语
2015/02/27 职场文书
2015年卫生监督工作总结
2015/05/21 职场文书
仅用一句SQL更新整张表的涨跌幅、涨跌率的解决方案
2021/05/06 MySQL
分析并发编程之LongAdder原理
2021/06/29 Java/Android