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 命令行工具 shell_exec, exec, passthru, system详细使用介绍
Sep 11 PHP
PHP写的获取各搜索蜘蛛爬行记录代码
Aug 21 PHP
php文件服务实现虚拟挂载其他目录示例
Apr 17 PHP
PHP 5.3新增魔术方法__invoke概述
Jul 23 PHP
PHP伪造来源HTTP_REFERER的方法实例详解
Jul 06 PHP
PHP MYSQL实现登陆和模糊查询两大功能
Feb 05 PHP
CodeIgniter基于Email类发邮件的方法
Mar 29 PHP
php将文件夹打包成zip文件的简单实现方法
Oct 04 PHP
浅析php中array_map和array_walk的使用对比
Nov 20 PHP
PHP 应用容器化以及部署方法
Feb 12 PHP
php 读写json文件及修改json的方法
Mar 07 PHP
PHP连续签到功能实现方法详解
Dec 04 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
使用pthreads实现真正的PHP多线程(需PHP5.3以上版本)
2014/05/05 PHP
php实现mysql事务处理的方法
2014/12/25 PHP
利用PHP判断是手机移动端还是PC端访问的函数示例
2017/12/14 PHP
LBS blog sql注射漏洞[All version]-官方已有补丁
2007/08/26 Javascript
JavaScript 常见对象类创建代码与优缺点分析
2009/12/07 Javascript
jquery select动态加载选择(兼容各种浏览器)
2013/02/01 Javascript
js判断浏览器是否支持html5
2014/08/17 Javascript
javascript数组输出的两种方式
2015/01/13 Javascript
javascript判断移动端访问设备并解析对应CSS的方法
2015/02/05 Javascript
JS获得图片alt信息的方法
2015/04/01 Javascript
jQuery中inArray方法注意事项分析
2016/01/25 Javascript
jQuery基于Ajax实现读取XML数据功能示例
2018/05/31 jQuery
vue两个组件间值的传递或修改方式
2018/07/04 Javascript
JS函数节流和防抖之间的区分和实现详解
2019/01/11 Javascript
layui实现checkbox的目录树tree的例子
2019/09/12 Javascript
使用Vue实现调用接口加载页面初始数据
2019/10/28 Javascript
Node.js实现批量下载图片简单操作示例
2020/01/18 Javascript
JavaScript 异步时序问题
2020/11/20 Javascript
Python中使用logging模块代替print(logging简明指南)
2014/07/09 Python
浅析Python中的序列化存储的方法
2015/04/28 Python
在Django框架中运行Python应用全攻略
2015/07/17 Python
python数据预处理之将类别数据转换为数值的方法
2017/07/05 Python
使用Python获取网段IP个数以及地址清单的方法
2018/11/01 Python
python 获取键盘输入,同时有超时的功能示例
2018/11/13 Python
Python批量删除只保留最近几天table的代码实例
2019/04/01 Python
Python中的 sort 和 sorted的用法与区别
2019/08/10 Python
python中对_init_的理解及实例解析
2019/10/11 Python
python3.8 微信发送服务器监控报警消息代码实现
2019/11/05 Python
Python超越函数积分运算以及绘图实现代码
2019/11/20 Python
Python实现获取当前目录下文件名代码详解
2020/03/10 Python
keras 获取某层的输入/输出 tensor 尺寸操作
2020/06/10 Python
python安装读取grib库总结(推荐)
2020/06/24 Python
allbeauty美国:英国在线美容店
2019/03/11 全球购物
小学音乐教学反思
2014/02/05 职场文书
计算机通信专业推荐信
2014/02/22 职场文书
走群众路线学习心得体会
2014/10/31 职场文书