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 fread()使用技巧
Jan 22 PHP
PHP 文件上传全攻略
Apr 28 PHP
记录mysql性能查询过程的使用方法
May 02 PHP
PHP中使用smarty生成静态文件的例子
Apr 24 PHP
php实现图片上传并利用ImageMagick生成缩略图
Mar 14 PHP
图文详解phpstorm配置Xdebug进行调试PHP教程
Jun 13 PHP
PHP使用new StdClass()创建空对象的方法分析
Jun 06 PHP
PHP四种排序算法实现及效率分析【冒泡排序,插入排序,选择排序和快速排序】
Apr 27 PHP
php微信开发之关注事件
Jun 14 PHP
详解Laravel服务容器的绑定与解析
Nov 05 PHP
PHP读取文件,解决中文乱码UTF-8的方法分析
Jan 22 PHP
php高性能日志系统 seaslog 的安装与使用方法分析
Feb 29 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
删除无限级目录与文件代码共享
2006/07/12 PHP
基于php常用函数总结(数组,字符串,时间,文件操作)
2013/06/27 PHP
浅谈PHP正则表达式中修饰符/i, /is, /s, /isU
2014/10/21 PHP
详解PHP函数 strip_tags 处理字符串缺陷bug
2017/06/11 PHP
laravel利用中间件防止未登录用户直接访问后台的方法
2019/09/30 PHP
(仅IE下有效)关于checkbox 三态
2007/05/12 Javascript
jQuery(非HTML5)可编辑表格实现代码
2012/12/11 Javascript
JQGrid的用法解析(列编辑,添加行,删除行)
2013/11/08 Javascript
JavaScript?Apple设备检测示例代码
2013/11/15 Javascript
详解JavaScript语法对{}处理的坑爹之处
2014/06/05 Javascript
滚动条响应鼠标滑轮事件实现上下滚动的js代码
2014/06/30 Javascript
通过jquery-ui中的sortable来实现拖拽排序的简单实例
2016/05/24 Javascript
使用jquery实现的循环连续可停顿滚动实例
2016/11/23 Javascript
详解jQuery中ajax.load()方法
2017/01/25 Javascript
说说如何在Vue.js中实现数字输入组件的方法
2019/01/08 Javascript
微信小程序五子棋游戏AI实现方法【附demo源码下载】
2019/02/20 Javascript
微信小程序文字显示换行问题
2019/07/28 Javascript
vue实现评价星星功能
2020/06/30 Javascript
Tensorflow实现AlexNet卷积神经网络及运算时间评测
2018/05/24 Python
python读取Excel实例详解
2018/08/17 Python
利用python如何在前程无忧高效投递简历
2019/05/07 Python
Python+pyplot绘制带文本标注的柱状图方法
2019/07/08 Python
Python使用requests xpath 并开启多线程爬取西刺代理ip实例
2020/03/06 Python
python实现用户名密码校验
2020/03/18 Python
python中uuid模块实例浅析
2020/12/29 Python
Javascript 高级手势使用介绍
2013/04/21 HTML / CSS
下述程序的作用是计算机数组中的最大元素值及其下标
2012/11/26 面试题
外贸业务员岗位职责
2013/11/24 职场文书
国际贸易毕业生求职信范文
2014/02/21 职场文书
企业党员一句话承诺
2014/05/30 职场文书
美术学专业求职信
2014/07/23 职场文书
保送生自荐信范文
2015/03/26 职场文书
家长意见书
2015/06/04 职场文书
叶问观后感
2015/06/15 职场文书
Python中使用ipython的详细教程
2021/06/22 Python
Python绘画好看的星空图
2022/03/17 Python