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作的文本留言本的例子(一)
Oct 09 PHP
第六节--访问属性和方法
Nov 16 PHP
PHP文件下载类
Dec 06 PHP
php 获取本机外网/公网IP的代码
May 09 PHP
CI框架在CLI下执行占用内存过大问题的解决方法
Jun 17 PHP
PHP文件读取功能的应用实例
May 08 PHP
php使用gd2绘制基本图形示例(直线、圆、正方形)
Feb 15 PHP
thinkPHP分页功能实例详解
May 05 PHP
PDO::getAvailableDrivers讲解
Jan 28 PHP
PHP自动生成缩略图函数的源码示例
Mar 18 PHP
使用laravel的Eloquent模型如何获取数据库的指定列
Oct 17 PHP
php设计模式之状态模式实例分析【星际争霸游戏案例】
Mar 26 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类的封装与继承详解
2015/09/29 PHP
PHP SESSION机制的理解与实例
2019/03/22 PHP
JsEasy简介 JsEasy是什么?与下载
2007/03/07 Javascript
数组Array进行原型prototype扩展后带来的for in遍历问题
2010/02/07 Javascript
jQuery中对节点进行操作的相关介绍
2013/04/16 Javascript
js判断undefined类型,undefined,null, 的区别详细解析
2013/12/16 Javascript
js阻止冒泡和默认事件(默认行为)详解
2016/10/20 Javascript
js中开关变量使用实例
2017/02/24 Javascript
详解用vue编写弹出框组件
2017/07/04 Javascript
浅谈JS中的反柯里化( uncurrying)
2017/08/17 Javascript
vue-router 权限控制的示例代码
2017/09/21 Javascript
React Native实现地址挑选器功能
2017/10/24 Javascript
webpack3里使用uglifyjs压缩js时打包报错的解决
2018/12/13 Javascript
页面内锚点定位及跳转方法总结(推荐)
2019/04/24 Javascript
jQuery表单选择器用法详解
2019/08/22 jQuery
JavaScript监听一个DOM元素大小变化
2020/04/26 Javascript
[39:11]DOTA2上海特级锦标赛C组资格赛#2 LGD VS Newbee第二局
2016/02/28 DOTA
python使用cStringIO实现临时内存文件访问的方法
2015/03/26 Python
Python实现的井字棋(Tic Tac Toe)游戏示例
2018/01/31 Python
python GUI库图形界面开发之PyQt5切换按钮控件QPushButton详细使用方法与实例
2020/02/28 Python
Anaconda+Pycharm环境下的PyTorch配置方法
2020/03/13 Python
Django Serializer HiddenField隐藏字段实例
2020/03/31 Python
详解Python设计模式之策略模式
2020/06/15 Python
使用before和:after伪类制作css3圆形按钮
2014/04/08 HTML / CSS
HTML5 在canvas中绘制矩形附效果图
2014/06/23 HTML / CSS
迟到检讨书大全
2014/01/25 职场文书
颂军魂爱军营演讲稿
2014/09/13 职场文书
教师个人自我剖析材料
2014/09/29 职场文书
2014年终工作总结范本
2014/12/15 职场文书
岗位聘任报告
2015/03/02 职场文书
稽核岗位职责范本
2015/04/13 职场文书
六一儿童节主持开场白
2015/05/28 职场文书
2015年“我们的节日·中秋节”活动总结
2015/07/30 职场文书
2015年庆祝国庆节66周年演讲稿
2015/07/30 职场文书
离婚民事起诉状
2015/08/03 职场文书
MySQL学习总结-基础架构概述
2021/04/05 MySQL