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 相关文章推荐
oracle资料库函式库
Oct 09 PHP
关于PHP5 Session生命周期介绍
Mar 02 PHP
php抓取https的内容的代码
Apr 06 PHP
7个超级实用的PHP代码片段
Jul 11 PHP
php中OR与|| AND与&amp;&amp;的区别总结
Oct 26 PHP
PHP程序员基本要求和必备技能
May 09 PHP
Mac环境下php操作mysql数据库的方法分享
May 11 PHP
PHP 二级子目录(后台目录)设置二级域名
Mar 02 PHP
php 实现银联商务H5支付的示例代码
Oct 12 PHP
laravel config文件配置全局变量的例子
Oct 13 PHP
php7 图形用户界面GUI 开发示例
Feb 22 PHP
PHP实现本地图片转base64格式并上传
May 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
解决PHP4.0 和 PHP5.0类构造函数的兼容问题
2013/08/01 PHP
php格式化日期和时间格式化示例分享
2014/02/24 PHP
php之Smarty模板使用方法示例详解
2014/07/08 PHP
PHP curl 抓取AJAX异步内容示例
2014/09/09 PHP
laravel安装和配置教程
2014/10/29 PHP
php计算整个目录大小的方法
2015/06/19 PHP
PHP计算加权平均数的方法
2015/07/16 PHP
使用PHP json_decode可能遇到的坑与解决方法
2017/08/03 PHP
Javascript之this关键字深入解析
2013/11/12 Javascript
jQuery/CSS3图片特效插件整理推荐
2014/12/07 Javascript
深入理解JavaScript的React框架的原理
2015/07/02 Javascript
JQuery异步提交表单与文件上传功能示例
2017/01/12 Javascript
JavaScript优化以及前段开发小技巧
2017/02/02 Javascript
Node.js中流(stream)的使用方法示例
2017/07/16 Javascript
js实现ATM机存取款功能
2020/10/27 Javascript
9102了,你还不会移动端真机调试吗
2019/03/25 Javascript
vue中nextTick用法实例
2019/09/11 Javascript
vue 返回上一页,页面样式错乱的解决
2019/11/14 Javascript
vue中keep-alive、activated的探讨和使用详解
2020/07/26 Javascript
wepy--用vantUI 实现上弹列表并选择相应的值操作
2020/11/03 Javascript
了不起的11个JavaScript代码重构最佳实践小结
2021/01/11 Javascript
python实现爬虫统计学校BBS男女比例之多线程爬虫(二)
2015/12/31 Python
对python:threading.Thread类的使用方法详解
2019/01/31 Python
Python调用C语言的实现
2019/07/26 Python
Python列表list常用内建函数实例小结
2019/10/22 Python
Python+Dlib+Opencv实现人脸采集并表情判别功能的代码
2020/07/01 Python
Python requests及aiohttp速度对比代码实例
2020/07/16 Python
Python数据模型与Python对象模型的相关总结
2021/01/26 Python
HTML5 通过Vedio标签实现视频循环播放的示例代码
2020/08/05 HTML / CSS
旅游与酒店管理的自我评价分享
2013/11/03 职场文书
女大学生个人求职信
2013/12/09 职场文书
营业员演讲稿
2013/12/30 职场文书
团日活动策划书
2014/02/01 职场文书
商务日语专业毕业生自荐信
2014/03/27 职场文书
中班教师个人总结
2015/02/05 职场文书
幼儿教师辞职信范文
2015/03/02 职场文书