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基础学习笔记
Mar 18 PHP
php smarty的预保留变量总结
Dec 04 PHP
php 变量定义方法
Jun 14 PHP
php面向对象全攻略 (三)特殊的引用“$this”的使用
Sep 30 PHP
PHP strncasecmp字符串比较的小技巧
Jan 04 PHP
PHP中输出转义JavaScript代码的实现代码
Apr 22 PHP
PHP数组操作汇总 php数组的使用技巧
Jul 17 PHP
PHP实现中文圆形印章特效
Jun 19 PHP
PHP检查网站是否宕机的方法示例
Jul 24 PHP
PHP验证码无法显示的原因及解决办法
Aug 11 PHP
php+redis消息队列实现抢购功能
Feb 08 PHP
PHP call_user_func和call_user_func_array函数的简单理解与应用分析
Nov 25 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+js iframe实现上传头像界面无跳转
2014/04/29 PHP
Codeigniter的dom类用法实例
2015/06/26 PHP
Javascript遍历table中的元素示例代码
2014/07/08 Javascript
使用jspdf生成pdf报表
2015/07/03 Javascript
JavaScript代码轻松实现网页内容禁止复制(代码简单)
2015/10/23 Javascript
jQuery实现div随意拖动的实例代码(通用代码)
2016/01/28 Javascript
javascript 数组的定义和数组的长度
2016/06/07 Javascript
Node.js实现兼容IE789的文件上传进度条
2016/09/02 Javascript
Bootstrap导航条学习使用(一)
2017/02/08 Javascript
JavaScript表单验证的两种实现方法
2017/02/11 Javascript
Vue Socket.io源码解读
2018/02/07 Javascript
Koa2微信公众号开发之本地开发调试环境搭建
2018/05/16 Javascript
vue组件文档(.md)中如何自动导入示例(.vue)详解
2019/01/25 Javascript
Vue+Element UI+Lumen实现通用表格分页功能
2019/02/02 Javascript
关于vue-cli 3配置打包优化要点(推荐)
2019/04/22 Javascript
JS数组索引检测中的数据类型问题详解
2021/01/11 Javascript
在Python程序中进行文件读取和写入操作的教程
2015/04/28 Python
Python中用altzone()方法处理时区的教程
2015/05/22 Python
python中星号变量的几种特殊用法
2016/09/07 Python
你应该知道的python列表去重方法
2017/01/17 Python
利用python写个下载teahour音频的小脚本
2017/05/08 Python
Python实现动态加载模块、类、函数的方法分析
2017/07/18 Python
使用python脚本实现查询火车票工具
2018/07/19 Python
十个Python练手的实战项目,学会这些Python就基本没问题了(推荐)
2019/04/26 Python
python常见字符串处理函数与用法汇总
2019/10/30 Python
python 实现多线程下载视频的代码
2019/11/15 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
2020/02/23 Python
python 生成任意形状的凸包图代码
2020/04/16 Python
html5 canvas的绘制文本自动换行的示例代码
2018/09/17 HTML / CSS
基本款天堂:Everlane
2017/05/13 全球购物
汽车工程专业应届生求职信
2013/10/19 职场文书
商务英语毕业生自荐信范文
2013/11/08 职场文书
省三好学生申请材料
2014/01/22 职场文书
公安局班子个人对照检查材料思想汇报
2014/10/09 职场文书
司法局2014法制宣传日活动总结
2014/11/01 职场文书
汽车修理厂管理制度
2015/08/05 职场文书