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 base64+gzinflate压缩编码和解码代码
Oct 03 PHP
PHP set_time_limit(0)长连接的实现分析
Mar 02 PHP
phpize的深入理解
Jun 03 PHP
PHP如何利用P3P实现跨域
Aug 24 PHP
php阻止页面后退的方法分享
Feb 17 PHP
php将字符串转化成date存入数据库的两种方式
Apr 28 PHP
Ubuntu12下编译安装PHP5.3开发环境
Mar 27 PHP
PHP实现小偷程序实例
Oct 31 PHP
PHP简单实现防止SQL注入的方法
Mar 13 PHP
Linux基于php-fpm模式的lamp搭建phpmyadmin的方法
Oct 25 PHP
PHP-FPM和Nginx的通信机制详解
Feb 01 PHP
PHP大文件及断点续传下载实现代码
Aug 18 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面向对象分析设计的61条军规小结
2010/07/17 PHP
PHP重定向的3种方式
2013/03/07 PHP
ThinkPHP实现带验证码的文件上传功能实例
2014/11/01 PHP
PHP使用preg_split()分割特殊字符(元字符等)的方法分析
2017/02/04 PHP
PHP实现防盗链的方法分析
2017/07/25 PHP
PHP实现字符串翻转功能的方法【递归与循环算法】
2017/11/03 PHP
找出字符串中出现次数最多的字母和出现次数精简版
2012/11/07 Javascript
jQuery过滤选择器用法分析
2015/02/10 Javascript
JS实现的生成随机数的4个函数分享
2015/02/11 Javascript
angularJS与bootstrap结合实现动态加载弹出提示内容
2015/10/16 Javascript
AngularJs concepts详解及示例代码
2016/09/01 Javascript
vue组件如何被其他项目引用
2017/04/13 Javascript
几种响应式文字详解
2017/05/19 Javascript
Vue.js实现一个todo-list的上移下移删除功能
2017/06/26 Javascript
解决option标签selected=&quot;selected&quot;属性失效的问题
2017/11/06 Javascript
Node使用Sequlize连接Mysql报错:Access denied for user ‘xxx’@‘localhost’
2018/01/03 Javascript
element-ui 实现响应式导航栏的示例代码
2020/05/08 Javascript
vuex存取值和映射函数使用说明
2020/07/24 Javascript
vue Treeselect 树形下拉框:获取选中节点的ids和lables操作
2020/08/15 Javascript
[02:49:21]2019完美盛典全程录像
2019/12/08 DOTA
python图像处理之镜像实现方法
2015/05/30 Python
Python本地与全局命名空间用法实例
2015/06/16 Python
Python对象类型及其运算方法(详解)
2017/07/05 Python
Flask 让jsonify返回的json串支持中文显示的方法
2018/03/26 Python
基于python实现自动化办公学习笔记(CSV、word、Excel、PPT)
2019/08/06 Python
Python3进制之间的转换代码实例
2019/08/24 Python
如何利用Python开发一个简单的猜数字游戏
2019/09/22 Python
python为QT程序添加图标的方法详解
2020/03/09 Python
Django 项目布局方法(值得推荐)
2020/03/22 Python
通过Python pyecharts输出保存图片代码实例
2020/11/25 Python
python 实现端口扫描工具
2020/12/18 Python
给校长的建议书
2014/03/12 职场文书
2015年世界环境日活动总结
2015/02/11 职场文书
JavaWeb 入门篇(3)ServletContext 详解 具体应用
2021/07/16 Java/Android
常用的文件对应的MIME类型汇总
2022/04/26 HTML / CSS
GoFrame框架数据校验之校验结果Error接口对象
2022/06/21 Golang