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面向对象的使用教程 简单数据库连接
Nov 25 PHP
php 获取mysql数据库信息代码
Mar 12 PHP
全世界最小的php网页木马一枚 附PHP木马的防范方法
Oct 09 PHP
使用VisualStudio开发php的图文设置方法
Aug 21 PHP
PHP获取文件绝对路径的代码(上一级目录)
May 29 PHP
PHP gbk环境下json_dencode传送来的汉字
Nov 13 PHP
thinkphp循环结构用法实例
Nov 24 PHP
WordPress中转义HTML与过滤链接的相关PHP函数使用解析
Dec 22 PHP
php自动提交表单的方法(基于fsockopen与curl)
May 09 PHP
Thinkphp实现站点静态化的方法详解
Mar 21 PHP
PHP+Mysql+Ajax实现淘宝客服或阿里旺旺聊天功能(前台页面)
Jun 16 PHP
php实现微信模板消息推送
Mar 30 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下实现在指定目录搜索指定类型文件的函数
2008/10/03 PHP
php处理斐波那契数列非递归方法
2012/02/04 PHP
php计算一个文件大小的方法
2015/03/30 PHP
支持中文的PHP按字符串长度分割成数组代码
2015/05/17 PHP
php 生成加密公钥加密私钥实例详解
2017/06/16 PHP
JS中style属性
2006/10/11 Javascript
jquery插件之easing 动态菜单
2010/08/21 Javascript
TBCompressor js代码压缩
2011/01/05 Javascript
当前流行的JavaScript代码风格指南
2014/09/10 Javascript
js数组的基本操作(很全自己整理的)
2014/10/16 Javascript
jQuery中html()方法用法实例
2014/12/25 Javascript
js实现的星星评分功能函数
2015/12/09 Javascript
原生js实现图片层叠轮播切换效果
2016/02/02 Javascript
浅谈js的html元素的父节点,子节点
2016/08/06 Javascript
js倒计时简单实现代码
2016/08/11 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
2016/11/01 Javascript
javascript数组拍平方法总结
2018/01/20 Javascript
vue 自定义 select内置组件
2018/04/10 Javascript
解决element-ui中下拉菜单子选项click事件不触发的问题
2018/08/22 Javascript
JavaScript闭包与作用域链实例分析
2019/01/21 Javascript
理理Vue细节(推荐)
2019/04/16 Javascript
jQuery 选择器用法基础入门示例
2020/01/04 jQuery
vue 判断元素内容是否超过宽度的方式
2020/07/29 Javascript
Python pass 语句使用示例
2014/03/11 Python
浅谈Python中的bs4基础
2018/10/21 Python
python爬虫之urllib,伪装,超时设置,异常处理的方法
2018/12/19 Python
Python及Pycharm安装方法图文教程
2019/08/05 Python
Python 列表的清空方式
2020/01/13 Python
Html5移动端获奖无缝滚动动画实现示例
2018/06/25 HTML / CSS
印尼在线精品店:Berrybenka.com
2016/10/22 全球购物
世界顶级户外运动品牌折扣网站:LeftLane Sports
2019/06/12 全球购物
澳大利亚最受欢迎的女士度假服装:Kabana Shop
2020/10/10 全球购物
数控加工专业毕业生自荐信
2013/09/27 职场文书
2013年入党人员的自我鉴定
2013/10/25 职场文书
民主评议党员自我评议范文2014
2014/09/26 职场文书
幼儿园毕业典礼园长致辞
2015/07/29 职场文书