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读取txt文件的内容并赋值给数组的代码
Nov 03 PHP
PHP 实现explort() 功能的详解
Jun 20 PHP
phpQuery占用内存过多的处理方法
Nov 13 PHP
php curl模拟post请求小实例
Nov 13 PHP
yiic命令时提示“php.exe”不是内部或外部命令的解决方法
Dec 18 PHP
php站内搜索关键词变亮的实现方法
Dec 30 PHP
WordPress中查询文章的循环Loop结构及用法分析
Dec 17 PHP
PHP函数超时处理方法
Feb 14 PHP
PHP中addslashes与mysql_escape_string的区别分析
Apr 25 PHP
PHP解耦的三重境界(浅谈服务容器)
Mar 13 PHP
删除PHP数组中头部、尾部、任意元素的实现代码
Apr 10 PHP
PHP基于DateTime类解决Unix时间戳与日期互转问题【针对1970年前及2038年后时间戳】
Jun 13 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
百事可乐也出咖啡了 双倍咖啡因双倍快乐
2021/03/03 咖啡文化
php 全局变量范围分析
2009/08/07 PHP
深入解析fsockopen与pfsockopen的区别
2013/07/05 PHP
php中error与exception的区别及应用
2014/07/28 PHP
php+ajax实现带进度条的上传图片功能【附demo源码下载】
2016/09/14 PHP
阿里云的WindowsServer2016上部署php+apache
2018/07/17 PHP
使用PHPUnit进行单元测试并生成代码覆盖率报告的方法
2019/03/08 PHP
php常用字符串长度函数strlen()与mb_strlen()用法实例分析
2019/06/25 PHP
php实现的生成排列算法示例
2019/07/25 PHP
jquery实现的一个文章自定义分段显示功能
2014/05/23 Javascript
PHP中CURL的几个经典应用实例
2015/01/23 Javascript
TinyMCE提交AjaxForm获取不到数据的解决方法
2015/03/05 Javascript
jQuery焦点控制图层展示延迟隐藏的方法
2015/03/09 Javascript
JS不用正则验证输入的字符串是否为空(包含空格)的实现代码
2016/06/14 Javascript
vue双向绑定简要分析
2017/03/23 Javascript
Vue2几种常见开局方式详解
2017/09/09 Javascript
用vue封装插件并发布到npm的方法步骤
2017/10/18 Javascript
vue用elementui写form表单时,在label里添加空格操作
2020/08/13 Javascript
python实现分析apache和nginx日志文件并输出访客ip列表的方法
2015/04/04 Python
解决python3 urllib中urlopen报错的问题
2017/03/25 Python
python如何实现内容写在图片上
2018/03/23 Python
PyQt5每天必学之滑块控件QSlider
2018/04/20 Python
python树莓派红外反射传感器
2019/01/21 Python
django表单的Widgets使用详解
2019/07/22 Python
Django多进程滚动日志问题解决方案
2019/12/17 Python
基于Python编写一个计算器程序,实现简单的加减乘除和取余二元运算
2020/08/05 Python
ALDO英国官网:加拿大女鞋品牌
2018/02/19 全球购物
日本航空官方网站:JAL
2019/06/19 全球购物
Onzie官网:美国时尚瑜伽品牌
2019/08/21 全球购物
学生的自我鉴定范文
2013/10/24 职场文书
入党积极分子思想汇报
2014/01/02 职场文书
关爱留守儿童标语
2014/06/18 职场文书
群众路线教育实践活动学习心得体会
2014/10/30 职场文书
党员转正意见怎么写
2015/06/03 职场文书
2016年6.5世界环境日宣传活动总结
2016/04/01 职场文书
python自动化调用百度api解决验证码
2021/04/13 Python