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 用checkbox一次性删除多条记录的方法
Feb 23 PHP
php smarty 二级分类代码和模版循环例子
Jun 16 PHP
应用开发中涉及到的css和php笔记分享
Aug 02 PHP
PHP中ob_start函数的使用说明
Nov 11 PHP
PHP错误WARNING: SESSION_START() [FUNCTION.SESSION-START]解决方法
May 04 PHP
php计算两个日期时间差(返回年、月、日)
Jun 19 PHP
WordPress中调试缩略图的相关PHP函数使用解析
Jan 07 PHP
PHP编程之设置apache虚拟目录
Jul 08 PHP
PHP实现百度人脸识别
May 06 PHP
Laravel 中使用简单的方法跟踪用户是否在线(推荐)
Oct 30 PHP
thinkphp5.1框架模板赋值与变量输出示例
May 25 PHP
PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
Apr 01 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
解决ajax+php中文乱码的方法详解
2013/06/09 PHP
PHP对文件进行加锁、解锁实例
2015/01/23 PHP
PHP文件缓存smarty模板应用实例分析
2016/02/26 PHP
解决yii2左侧菜单子级无法高亮问题的方法
2016/05/08 PHP
PHP实现链式操作的原理详解
2016/09/16 PHP
PHP实现将标点符号正则替换为空格的方法
2017/08/09 PHP
php面向对象程序设计入门教程
2019/06/22 PHP
Extjs优化(一)删除冗余代码提高运行速度
2013/04/15 Javascript
jQuery中.live()方法的用法深入解析
2013/12/30 Javascript
利用a标签自动解析URL分析网址实例
2014/10/20 Javascript
node.js中的path.sep方法使用说明
2014/12/08 Javascript
浅谈Javascript线程及定时机制
2015/07/02 Javascript
jQuery使用DataTable实现删除数据后重新加载功能
2017/02/27 Javascript
Node.js环境下Koa2添加travis ci持续集成工具的方法
2017/06/19 Javascript
jQuery代码优化方法总结
2018/01/29 jQuery
vuex 实现getter值赋值给vue组件里的data示例
2019/11/05 Javascript
详解Nuxt内导航栏的两种实现方式
2020/04/16 Javascript
[49:35]KG vs SECRET 2019国际邀请赛小组赛 BO2 第一场 8.16
2019/08/19 DOTA
Python实现类继承实例
2014/07/04 Python
Python中3种内建数据结构:列表、元组和字典
2014/11/30 Python
Python可跨平台实现获取按键的方法
2015/03/05 Python
python中星号变量的几种特殊用法
2016/09/07 Python
人工智能最火编程语言 Python大战Java!
2017/11/13 Python
Python多进程与服务器并发原理及用法实例分析
2018/08/21 Python
Python中无限循环需要什么条件
2020/05/27 Python
浅谈CSS3动画的回调处理
2016/07/21 HTML / CSS
JackJones官方旗舰店:杰克琼斯男装
2018/03/27 全球购物
意大利在线购买隐形眼镜网站:VisionDirect.it
2019/03/18 全球购物
军校制空专业毕业生自我鉴定
2013/11/16 职场文书
项目合作计划书
2014/01/09 职场文书
征婚广告词
2014/03/17 职场文书
小学模范班主任事迹材料
2014/05/13 职场文书
公司员工宿舍管理制度
2015/08/03 职场文书
uniapp开发小程序的经验总结
2021/04/08 Javascript
对PyTorch中inplace字段的全面理解
2021/05/22 Python
Python爬虫中urllib3与urllib的区别是什么
2021/07/21 Python