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 相关文章推荐
从C/C++迁移到PHP——判断字符类型的函数
Oct 09 PHP
Can't create/write to file 'C:\WINDOWS\TEMP\...MYSQL报错解决方法
Jun 30 PHP
php中批量替换文件名的实现代码
Jul 20 PHP
PHP file_exists问题杂谈
May 07 PHP
解析PHP中empty is_null和isset的测试
Jun 29 PHP
百度地图API应用之获取用户的具体位置
Jun 10 PHP
phpmyadmin提示The mbstring extension is missing的解决方法
Dec 17 PHP
PHP获取数组最后一个值的2种方法
Jan 21 PHP
Centos6.5和Centos7 php环境搭建方法
May 27 PHP
php批量删除操作代码分享
Feb 26 PHP
PHP实现简单计算器小程序
Aug 28 PHP
ThinkPHP3.2.3框架邮件发送功能图文实例详解
Apr 23 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
phpmyadmin3 安装配置图解教程
2012/03/29 PHP
PHP程序漏洞产生的原因分析与防范方法说明
2014/03/06 PHP
laravel安装和配置教程
2014/10/29 PHP
Linux系统下php获得系统分区信息的方法
2015/03/30 PHP
PHP.ini安全配置检测工具pcc简单介绍
2015/07/02 PHP
PHP实现求两个字符串最长公共子串的方法示例
2017/11/17 PHP
javascript 密码强弱度检测万能插件
2009/02/25 Javascript
js sort 二维数组排序的用法小结
2014/01/24 Javascript
JQuery控制div外点击隐藏而div内点击不会隐藏的方法
2015/01/13 Javascript
jQuery实现TAB风格的全国省份城市滑动切换效果代码
2015/08/24 Javascript
bootstrap警告框使用方法解析
2017/01/13 Javascript
JS实现多物体运动的方法详解
2018/01/23 Javascript
Vue2.0点击切换类名改变样式的方法
2018/08/22 Javascript
webpack配置proxyTable时pathRewrite无效的解决方法
2018/12/13 Javascript
babel7.x和webpack4.x配置vue项目的方法步骤
2019/05/12 Javascript
微信小程序解析富文本过程详解
2019/07/13 Javascript
vue 开发之路由配置方法详解
2019/12/02 Javascript
vscode 插件开发 + vue的操作方法
2020/06/05 Javascript
Python删除windows垃圾文件的方法
2015/07/14 Python
Python比较2个时间大小的实现方法
2018/04/10 Python
Python批处理更改文件名os.rename的方法
2018/10/26 Python
Python删除n行后的其他行方法
2019/01/28 Python
详解Django配置优化方法
2019/11/18 Python
解决python彩色螺旋线绘制引发的问题
2019/11/23 Python
Python解释器以及PyCharm的安装教程图文详解
2020/02/26 Python
keras的load_model实现加载含有参数的自定义模型
2020/06/22 Python
高分子材料个人求职信范文
2013/09/25 职场文书
化学相关工作求职信
2013/10/02 职场文书
动漫专业高职生职业生涯规划书
2014/02/15 职场文书
煤矿班组长竞聘书
2014/03/31 职场文书
我的中国梦演讲稿400字
2014/08/19 职场文书
升学宴答谢词
2015/01/05 职场文书
年会邀请函范文
2015/01/30 职场文书
教师节寄语2015
2015/03/23 职场文书
《有余数的除法》教学反思
2016/02/22 职场文书
css 中多种边框的实现小窍门
2021/04/07 HTML / CSS