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
同时提取多条新闻中的文本一例
Oct 09 PHP
php中计算程序运行时间的类代码
Nov 03 PHP
php自动给文章加关键词链接的函数代码
Nov 29 PHP
探讨GDFONTPATH能否被winxp下的php支持
Jun 21 PHP
解析php根据ip查询所在地区(非常有用,赶集网就用到)
Jul 01 PHP
linux中cd命令使用详解
Jan 08 PHP
php实现只保留mysql中最新1000条记录
Jun 18 PHP
帝国CMS留言板回复后发送EMAIL通知客户
Jul 06 PHP
Symfony2开发之控制器用法实例分析
Feb 05 PHP
php array_key_exists() 与 isset() 的区别
Oct 24 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 getsiteurl()函数
2009/09/05 PHP
PHP Memcached应用实现代码
2010/02/08 PHP
完整删除ecshop中获取店铺信息的API
2014/12/24 PHP
thinkPHP商城公告功能开发问题分析
2016/12/01 PHP
Zend Framework常用校验器详解
2016/12/09 PHP
PHP格式化显示时间date()函数代码
2018/10/03 PHP
php多进程应用场景实例详解
2019/07/22 PHP
Jquery中增加参数与Json转换代码
2009/11/20 Javascript
javascript 动态设置已知select的option的value值的代码
2009/12/16 Javascript
25个非常棒的jQuery滑块插件和教程小结
2011/09/02 Javascript
JQuery中使用Ajax赋值给全局变量异常的解决方法
2014/01/10 Javascript
通过js来制作复选框的全选和不选效果
2014/05/22 Javascript
jQuery中:header选择器用法实例
2014/12/29 Javascript
jquery插件corner实现圆角边框的方法
2015/03/09 Javascript
JavaScript实现显示函数调用堆栈的方法
2016/04/21 Javascript
js实现三级联动效果(简单易懂)
2017/03/27 Javascript
判断文字超过2行添加展开按钮,未超过则不显示,溢出部分显示省略号
2019/04/28 Javascript
vue使用swiper实现左右滑动切换图片
2020/10/16 Javascript
Python中map和列表推导效率比较实例分析
2015/06/17 Python
Python简单过滤字母和数字的方法小结
2019/01/09 Python
python多任务之协程的使用详解
2019/08/26 Python
python实现用户名密码校验
2020/03/18 Python
keras中epoch,batch,loss,val_loss用法说明
2020/07/02 Python
CSS实现半透明边框与多重边框的场景分析
2019/11/13 HTML / CSS
HTML5 History API 实现无刷新跳转
2016/01/11 HTML / CSS
HTML5中原生的右键菜单创建方法
2016/06/28 HTML / CSS
小溪流的歌教学反思
2014/02/13 职场文书
公司年会主持词
2014/03/22 职场文书
2014年党的群众路线整改措施思想汇报
2014/10/12 职场文书
党员批评与自我批评
2014/10/15 职场文书
2015欢度元旦标语口号
2014/12/09 职场文书
2015年全民国防教育日活动总结
2015/03/23 职场文书
pytorch交叉熵损失函数的weight参数的使用
2021/05/24 Python
Navicat连接MySQL错误描述分析
2021/06/02 MySQL
零基础学java之循环语句的使用
2022/04/10 Java/Android
微软Win11 全新照片应用面向 Dev预览版推出 新版本上手体验图集
2022/09/23 数码科技