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 相关文章推荐
利用js调用后台php进行数据处理原码
Oct 09 PHP
超强分页类2.0发布,支持自定义风格,默认4种显示模式
Jan 02 PHP
PHP 手机归属地查询 api
Feb 08 PHP
PHP正确配置mysql(apache环境)
Aug 28 PHP
php中判断文件空目录是否有读写权限的函数代码
Aug 07 PHP
php5.2 Json不能正确处理中文、GB编码的解决方法
Mar 28 PHP
PHP使用ffmpeg给视频增加字幕显示的方法
Mar 12 PHP
PHP迭代与递归实现无限级分类
Aug 28 PHP
PHP实现APP微信支付的实例讲解
Feb 10 PHP
微信公众号开发之获取位置信息php代码
Jun 13 PHP
详解no input file specified 三种解决方法
Nov 29 PHP
Aliyun Linux 编译安装 php7.3 tengine2.3.2 mysql8.0 redis5的过程详解
Oct 20 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清除数组中所有字符串两端空格的方法
2014/10/20 PHP
JavaScript实现统计文本框Textarea字数增强用户体验
2012/12/21 Javascript
javascript跟随滚动效果插件代码(javascript Follow Plugin)
2013/08/03 Javascript
简介JavaScript中toTimeString()方法的使用
2015/06/12 Javascript
谈谈javascript中使用连等赋值操作带来的问题
2015/11/26 Javascript
js实现百度地图定位于地址逆解析,显示自己当前的地理位置
2016/12/08 Javascript
javascript实现简单的可随机变色网页计算器示例
2016/12/30 Javascript
微信小程序的动画效果详解
2017/01/18 Javascript
Bootstrap导航中表单简单实现代码
2017/03/06 Javascript
jQuery EasyUI之验证框validatebox实例详解
2017/04/10 jQuery
基于vuejs实现一个todolist项目
2017/04/11 Javascript
nodejs后台集成ueditor富文本编辑器的实例
2017/07/11 NodeJs
BootStrap模态框不垂直居中的解决方法
2017/10/19 Javascript
VueJs 搭建Axios接口请求工具
2017/11/20 Javascript
VUE注册全局组件和局部组件过程解析
2019/10/10 Javascript
浅谈TypeScript 用 Webpack/ts-node 运行的配置记录
2019/10/11 Javascript
安装ElasticSearch搜索工具并配置Python驱动的方法
2015/12/22 Python
Python编程二分法实现冒泡算法+快速排序代码示例
2018/01/15 Python
Python中的TCP socket写法示例
2018/05/11 Python
python实现定时发送qq消息
2019/01/18 Python
python 判断文件还是文件夹的简单实例
2019/06/10 Python
python射线法判断检测点是否位于区域外接矩形内
2019/06/28 Python
python 梯度法求解函数极值的实例
2019/07/10 Python
Pytorch 多块GPU的使用详解
2019/12/31 Python
Python中pyecharts安装及安装失败的解决方法
2020/02/18 Python
Django微信小程序后台开发教程的实现
2020/06/03 Python
PIP和conda 更换国内安装源的方法步骤
2020/09/21 Python
韩国著名的在线综合购物网站:Akmall
2016/08/07 全球购物
介绍一下Linux文件的记录形式
2013/09/29 面试题
提高EJB性能都有哪些技巧
2012/03/25 面试题
电工实训报告总结
2014/11/05 职场文书
离职感谢信
2015/01/21 职场文书
2015年技术工作总结范文
2015/04/20 职场文书
2016寒假假期总结
2015/10/10 职场文书
Python FuzzyWuzzy实现模糊匹配
2022/04/28 Python
vue实现input输入模糊查询的三种方式
2022/08/14 Vue.js