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下的权限算法的实现
Apr 28 PHP
php的大小写敏感问题整理
Dec 29 PHP
浅析PHP Socket技术
Aug 02 PHP
PHP中auto_prepend_file与auto_append_file用法实例分析
Sep 22 PHP
PHP易混淆函数的区别及用法汇总
Nov 22 PHP
php从给定url获取文件扩展名的方法
Mar 14 PHP
phalcon框架使用指南
Feb 23 PHP
PHP HTTP 认证实例详解
Nov 03 PHP
Laravel中服务提供者和门面模式的入门介绍
Nov 06 PHP
php实现的中秋博饼游戏之掷骰子并输出结果功能详解
Nov 06 PHP
php实现微信原生支付(扫码支付)功能
May 30 PHP
ThinkPHP框架实现定时执行任务的两种方法分析
Sep 04 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过滤危险html代码
2008/08/18 PHP
codeigniter教程之上传视频并使用ffmpeg转flv示例
2014/02/13 PHP
使用php-timeit估计php函数的执行时间
2015/09/06 PHP
Smarty模板变量调节器用法分析
2016/05/23 PHP
PHP学习笔记之php文件操作
2016/06/03 PHP
PHP命名空间定义与用法实例分析
2019/08/14 PHP
Thinkphp 框架基础之入口文件功能、定义与用法分析
2020/04/27 PHP
HTTP头隐藏PHP版本号实现过程解析
2020/12/09 PHP
看了就知道什么是JSON
2007/12/09 Javascript
jQuery Ajax使用 全解析
2010/12/15 Javascript
深入理解JavaScript是如何实现继承的
2013/12/12 Javascript
js获取select默认选中的Option并不是当前选中值
2014/05/07 Javascript
javascript实现可拖动变色并关闭层窗口实例
2015/05/15 Javascript
Javascript获取数组中的最大值和最小值的方法汇总
2016/01/01 Javascript
Angular2表单自定义验证器的实现
2016/10/19 Javascript
基于JS分页控件实现简单美观仿淘宝分页按钮效果
2016/11/07 Javascript
js时间戳与日期格式之间转换详解
2017/12/11 Javascript
使用jquery Ajax实现上传附件功能
2018/10/23 jQuery
vue.js自定义组件directives的实例代码
2018/11/09 Javascript
Node.js动手撸一个静态资源服务器的方法
2019/03/09 Javascript
Vue Echarts实现可视化世界地图代码实例
2019/05/07 Javascript
Javascript实现简易天数计算器
2020/05/18 Javascript
[07:26]2015国际邀请赛第二日TOP10集锦
2015/08/06 DOTA
在Linux系统上安装Python的Scrapy框架的教程
2015/06/11 Python
linux环境下python中MySQLdb模块的安装方法
2017/06/16 Python
Python排序搜索基本算法之冒泡排序实例分析
2017/12/09 Python
Python抓取聚划算商品分析页面获取商品信息并以XML格式保存到本地
2018/02/23 Python
用python处理图片实现图像中的像素访问
2018/05/04 Python
浅谈Pycharm调用同级目录下的py脚本bug
2018/12/03 Python
python导入模块交叉引用的方法
2019/01/19 Python
Django 创建/删除用户的示例代码
2019/07/24 Python
Django 再谈一谈json序列化
2020/03/16 Python
雅萌 (YA-MAN) :日本美容家电领域的龙头企业
2017/05/12 全球购物
工程概预算专业毕业生求职信
2013/10/04 职场文书
python实现简单倒计时功能
2021/04/21 Python
css filter和getUserMedia的联合使用
2022/02/24 HTML / CSS