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的FTP学习(一)
Oct 09 PHP
利用递归把多维数组转为一维数组的函数
Oct 09 PHP
新手学PHP之数据库操作详解及乱码解决!
Jan 02 PHP
PHP Session变量不能传送到下一页的解决方法
Nov 27 PHP
简单的方法让你的后台登录更加安全(php中加session验证)
Aug 22 PHP
ThinkPHP中I(),U(),$this-&gt;post()等函数用法
Nov 22 PHP
php使用curl出现Expect:100-continue解决方法
Mar 03 PHP
php命令行(cli)模式下报require 加载路径错误的解决方法
Nov 23 PHP
php发送http请求的常用方法分析
Nov 08 PHP
thinkPHP数据库增删改查操作方法实例详解
Dec 06 PHP
php+mysql+jquery实现日历签到功能
Feb 27 PHP
thinkphp5框架路由原理与用法详解
Feb 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
PHP array_push 数组函数
2009/12/26 PHP
php将时间差转换为字符串提示
2011/09/07 PHP
yii操作cookie实例简介
2014/07/09 PHP
php简单实现发送带附件的邮件
2015/06/10 PHP
PHP获取当前系统时间的方法小结
2018/10/03 PHP
PHP PDOStatement::rowCount讲解
2019/02/01 PHP
smarty模板的使用方法实例分析
2019/09/18 PHP
Javascript 日期对象Date扩展方法
2009/05/30 Javascript
jquery 双色表格实现代码
2009/12/08 Javascript
jQuery的DOM操作之删除节点示例
2014/01/03 Javascript
js中的json对象详细介绍
2014/10/29 Javascript
基于jQuery实现放大镜特效
2020/10/19 Javascript
jQuery解决$符号命名冲突
2016/06/18 Javascript
基于angularJS的表单验证指令介绍
2016/10/21 Javascript
VUE JS 使用组件实现双向绑定的示例代码
2017/01/10 Javascript
解决vue项目报错webpackJsonp is not defined问题
2018/03/14 Javascript
Angular使用ControlValueAccessor创建自定义表单控件
2019/03/08 Javascript
vuex管理状态仓库使用详解
2020/07/29 Javascript
[52:41]OG vs IG 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/20 DOTA
用Python中的__slots__缓存资源以节省内存开销的方法
2015/04/02 Python
Python抓取电影天堂电影信息的代码
2016/04/07 Python
Python简单实现安全开关文件的两种方式
2016/09/19 Python
Python生成数字图片代码分享
2017/10/31 Python
关于Python turtle库使用时坐标的确定方法
2020/03/19 Python
Python搭建Keras CNN模型破解网站验证码的实现
2020/04/07 Python
浅析python 定时拆分备份 nginx 日志的方法
2020/04/27 Python
OpenCV 之按位运算举例解析
2020/06/19 Python
10个python爬虫入门实例(小结)
2020/11/01 Python
TripAdvisor土耳其网站:全球知名旅行社区,真实旅客评论
2017/04/17 全球购物
凯特王妃父母建立的派对用品网站:Party Pieces
2017/05/28 全球购物
火山咖啡:Volcanica Coffee
2019/10/29 全球购物
java程序员面试交流
2012/11/29 面试题
文化产业实施方案
2014/06/07 职场文书
询价采购方案
2014/06/09 职场文书
个人党性分析总结
2015/03/05 职场文书
2015年车间管理工作总结
2015/07/23 职场文书