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中利用substr_replace将指定两位置之间的字符替换为*号
Jan 27 PHP
一个基于PDO的数据库操作类
Mar 24 PHP
超级实用的7个PHP代码片段分享
Jan 05 PHP
PHP图片处理之使用imagecopy函数添加图片水印实例
Nov 19 PHP
php目录遍历函数opendir用法实例
Nov 20 PHP
windows7下php开发环境搭建图文教程
Jan 06 PHP
CodeIgniter针对lighttpd服务器URL重写的方法
Jun 10 PHP
CI框架数据库查询缓存优化的方法
Nov 21 PHP
PHP中字符串长度的截取用法示例
Jan 12 PHP
thinkPHP5 ACL用户权限模块用法详解
May 10 PHP
PHP代码重构方法漫谈
Apr 17 PHP
Smarty模板语法详解
Jul 20 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中选择什么接口(mysql、mysqli)访问mysql
2013/02/06 PHP
php一些错误处理的方法与技巧总结
2013/08/10 PHP
php一次性删除前台checkbox多选内容的方法
2013/09/22 PHP
PHP编程中的常见漏洞和代码实例
2014/08/06 PHP
php+mysql实现数据库随机重排实例
2014/10/17 PHP
PHP PDO fetch 模式各种参数的输出结果一览
2015/01/07 PHP
PHP中文乱码解决方案
2015/03/05 PHP
javascript权威指南 学习笔记之javascript数据类型
2011/09/24 Javascript
深入理解JavaScript系列(3) 全面解析Module模式
2012/01/15 Javascript
JavaScript中for..in循环陷阱介绍
2013/11/12 Javascript
jQuery中siblings()方法用法实例
2015/01/08 Javascript
JS获取图片lowsrc属性的方法
2015/04/01 Javascript
JavaScript实现带箭头标识的多级下拉菜单效果
2015/08/27 Javascript
基于JS分页控件实现简单美观仿淘宝分页按钮效果
2016/11/07 Javascript
利用JS实现页面删除并重新排序功能
2016/12/09 Javascript
作为老司机使用 React 总结的 11 个经验教训
2017/04/08 Javascript
r.js来合并压缩css文件的示例
2018/04/26 Javascript
移动端H5页面返回并刷新页面(BFcache)的方法
2018/11/06 Javascript
Vue + Scss 动态切换主题颜色实现换肤的示例代码
2020/04/27 Javascript
python使用PythonMagick将jpg图片转换成ico图片的方法
2015/03/26 Python
Python3实现并发检验代理池地址的方法
2016/09/18 Python
Python常见工厂函数用法示例
2018/03/21 Python
Python随机函数random()使用方法小结
2018/04/29 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
2018/06/13 Python
pandas通过loc生成新的列方法
2018/11/28 Python
Python + Requests + Unittest接口自动化测试实例分析
2019/12/12 Python
Python流程控制常用工具详解
2020/02/24 Python
html5 制作地图当前定位箭头的方法示例
2020/01/10 HTML / CSS
SEPHORA新西兰官方网站:购买化妆品和护肤品
2016/12/02 全球购物
银行求职推荐信范文
2013/11/30 职场文书
优秀交警事迹材料
2014/01/26 职场文书
各营销点岗位职责范本
2014/03/05 职场文书
体育专业大学生职业生涯规划范文:打造自己的运动帝国
2014/09/12 职场文书
2014年班务工作总结
2014/12/02 职场文书
开票员岗位职责
2015/02/12 职场文书
nginx服务器的下载安装与使用详解
2021/08/02 Servers