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和AJAX创建RSS聚合器的代码
Mar 13 PHP
PHP 获取远程文件内容的函数代码
Mar 24 PHP
一个显示某段时间内每个月的方法 返回由这些月份组成的数组
May 16 PHP
php计算十二星座的函数代码
Aug 21 PHP
深入理解require与require_once与include以及include_once的区别
Jun 05 PHP
php后台如何避免用户直接进入方法实例
Oct 15 PHP
php利用腾讯ip分享计划获取地理位置示例分享
Jan 20 PHP
PHP的一个完美GIF等比缩放类,附带去除缩放黑背景
Apr 01 PHP
Yii框架form表单用法实例
Dec 04 PHP
php简单生成随机数的方法
Jul 30 PHP
PHP多进程之pcntl_fork的实例详解
Oct 15 PHP
Laravel获取当前请求的控制器和方法以及中间件的例子
Oct 11 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
JS与PHP向函数传递可变参数的区别实例代码
2011/05/18 PHP
php 日期和时间的处理-郑阿奇(续)
2011/07/04 PHP
php数组函数序列之in_array() 查找数组值是否存在
2011/10/29 PHP
解析在apache里面给php写虚拟目录的详细方法
2013/06/24 PHP
PHP中如何防止外部恶意提交调用ajax接口
2016/04/11 PHP
浅析Yii2缓存的使用
2016/05/10 PHP
js实现类似新浪微博首页内容渐显效果的方法
2015/04/10 Javascript
Javascript中的方法和匿名方法实例详解
2015/06/13 Javascript
基于javascript实现全国省市二级联动下拉选择菜单
2016/01/28 Javascript
客户端验证用户名和密码的方法详解
2016/06/16 Javascript
JS实现复制内容到剪贴板功能兼容所有浏览器(推荐)
2016/06/17 Javascript
基于JS快速实现导航下拉菜单动画效果附源码下载
2016/10/27 Javascript
js代码实现下拉菜单【推荐】
2016/12/15 Javascript
vue bootstrap小例子一枚
2017/06/09 Javascript
vue-router路由与页面间导航实例解析
2017/11/07 Javascript
快速了解Node中的Stream流是什么
2019/02/13 Javascript
JavaScript 扩展运算符用法实例小结【基于ES6】
2019/06/17 Javascript
简单介绍Python中的filter和lambda函数的使用
2015/04/07 Python
Python类的动态修改的实例方法
2017/03/24 Python
Python中的探索性数据分析(功能式)
2017/12/22 Python
Pycharm新建模板默认添加个人信息的实例
2019/07/15 Python
Python Collatz序列实现过程解析
2019/10/12 Python
python实现tail实时查看服务器日志示例
2019/12/24 Python
python add_argument()用法解析
2020/01/29 Python
python实现音乐播放和下载小程序功能
2020/04/26 Python
python实现感知机模型的示例
2020/09/30 Python
html5小技巧之通过document.head获取head元素
2014/06/04 HTML / CSS
Hudson Jeans官网:高级精制牛仔裤
2018/11/28 全球购物
意大利在线眼镜精品店:Ottica Lipari
2019/11/11 全球购物
Tomcat Mysql datasource数据源配置
2015/12/28 面试题
JDBC操作数据库的基本流程是什么
2014/10/28 面试题
奉献家乡演讲稿
2014/09/13 职场文书
爱护公物主题班会
2015/08/17 职场文书
九年级语文教学反思
2016/03/03 职场文书
MySql新手入门的基本操作汇总
2021/05/13 MySQL
Django drf请求模块源码解析
2021/06/08 Python