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 相关文章推荐
Cannot modify header information错误解决方法
Oct 08 PHP
php cout&amp;lt;&amp;lt;的一点看法
Jan 24 PHP
PHP多个版本的分析解释
Jul 21 PHP
深入解析fsockopen与pfsockopen的区别
Jul 05 PHP
php中curl、fsocket、file_get_content三个函数的使用比较
May 09 PHP
PHP命名空间(Namespace)简明教程
Jun 11 PHP
php实现中文字符截取防乱码方法汇总
Apr 29 PHP
PHP利用APC模块实现大文件上传进度条的方法
Oct 29 PHP
php实现的操作excel类详解
Jan 15 PHP
PHP list() 将数组中的值赋给变量的简单实例
Jun 13 PHP
yii2的restful api路由实例详解
May 14 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
PHP查询数据库中满足条件的记录条数(两种实现方法)
2013/01/29 PHP
浅谈apache和nginx的rewrite的区别
2013/02/22 PHP
codeigniter框架批量插入数据
2014/01/09 PHP
PHP中批量生成静态html(命令行下运行PHP)
2014/04/19 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
在云虚拟主机部署thinkphp5项目的步骤详解
2017/12/21 PHP
thinkPHP事务操作简单案例分析
2019/10/17 PHP
实例讲解PHP表单
2020/06/10 PHP
Sample script that displays all of the users in a given SQL Server DB
2007/06/16 Javascript
JavaScript 学习笔记(十三)Dom创建表格
2010/01/21 Javascript
jquery动态加载js三种方法实例
2013/08/03 Javascript
javascript实现避免页面按钮重复提交
2015/01/08 Javascript
JavaScript对象反射用法实例
2015/04/17 Javascript
AngularJS基础 ng-href 指令用法
2016/08/01 Javascript
JavaScript 最佳实践:帮你提升代码质量
2016/12/03 Javascript
JS获取浮动(float)元素的style.left值为空的快速解决办法
2017/02/19 Javascript
微信小程序 Buffer缓冲区的详解
2017/07/06 Javascript
jQuery选择器特殊字符与属性空格问题
2017/08/14 jQuery
vue组件初学_弹射小球(实例讲解)
2017/09/06 Javascript
Vue实战之vue登录验证的实现代码
2017/10/31 Javascript
jQuery实现定时隐藏对话框的方法分析
2018/02/12 jQuery
Vue2.0学习系列之项目上线的方法步骤(图文)
2018/09/25 Javascript
微信小程序生成分享海报方法(附带二维码生成)
2019/03/29 Javascript
JS/jQuery实现超简单的Table表格添加,删除行功能示例
2019/07/31 jQuery
原生JS利用transform实现banner的无限滚动示例代码
2020/06/15 Javascript
python中字典(Dictionary)用法实例详解
2015/05/30 Python
Python读取视频的两种方法(imageio和cv2)
2018/04/15 Python
Python中一些不为人知的基础技巧总结
2018/05/19 Python
实例介绍Python中整型
2019/02/11 Python
对于Python深浅拷贝的理解
2019/07/29 Python
python 爬虫百度地图的信息界面的实现方法
2019/10/27 Python
美国著名的婴儿学步鞋老品牌:Robeez
2016/08/20 全球购物
澳大利亚网上玩具商店:Mr Toys Toyworld
2018/03/25 全球购物
幼教毕业生自我鉴定
2014/01/12 职场文书
毕业证明模板
2015/06/19 职场文书
python b站视频下载的五种版本
2021/05/27 Python