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 相关文章推荐
利用递归把多维数组转为一维数组的函数
Oct 09 PHP
用PHP制作的意见反馈表源码
Mar 11 PHP
PHP计划任务之关闭浏览器后仍然继续执行的函数
Jul 22 PHP
发款php蜘蛛统计插件只要有mysql就可用
Oct 12 PHP
PHP插入排序实现代码
Apr 04 PHP
老版本PHP转义Json里的特殊字符的函数
Jun 08 PHP
PHP安装threads多线程扩展基础教程
Nov 17 PHP
PHP异常处理Exception类
Dec 11 PHP
php 人员权限管理(RBAC)实例(推荐)
May 24 PHP
PHP函数用法详解【初始化、嵌套、内置函数等】
Jun 02 PHP
PHP预定义接口――Iterator用法示例
Jun 05 PHP
PHP如何解决微信文章图片防盗链
Dec 09 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 FPDF类库应用实现代码
2009/03/20 PHP
用Php编写注册后Email激活验证的实例代码
2013/03/11 PHP
php实现给一张图片加上水印效果
2016/01/02 PHP
php微信公众号开发之微信企业付款给个人
2018/10/04 PHP
php命名空间设计思想、用法与缺点分析
2019/07/17 PHP
Nginx+php配置文件及原理解析
2020/12/09 PHP
JS 建立对象的方法
2007/04/21 Javascript
JavaScript入门教程 Cookies
2009/01/31 Javascript
一个js的tab切换效果代码[代码分离]
2010/04/11 Javascript
33个优秀的jQuery 教程分享(幻灯片、动画菜单)
2011/07/08 Javascript
jQuery制作仿腾讯web qq用户体验桌面
2013/08/20 Javascript
检测一个函数是否是JavaScript原生函数的小技巧
2015/03/13 Javascript
JavaScritp添加url参数并将参数加入到url中及更改url参数的方法
2015/10/26 Javascript
轻松学习jQuery插件EasyUI EasyUI创建CRUD应用
2015/11/30 Javascript
Angularjs使用指令做表单校验的方法
2017/03/31 Javascript
微信小程序 支付后台java实现实例
2017/05/09 Javascript
Vue的elementUI实现自定义主题方法
2018/02/23 Javascript
微信小程序自定义组件之可清除的input组件
2018/07/17 Javascript
灵活使用console让js调试更简单的方法步骤
2019/04/23 Javascript
vue+element实现打印页面功能
2019/05/20 Javascript
AntV F2和vue-cli构建移动端可视化视图过程详解
2019/10/08 Javascript
vue实现简单瀑布流布局
2020/05/28 Javascript
JavaScript 链表定义与使用方法示例
2020/04/28 Javascript
Python的MongoDB模块PyMongo操作方法集锦
2016/01/05 Python
python3.6编写的单元测试示例
2019/08/17 Python
CSS3 calc()会计算属性详解
2018/02/27 HTML / CSS
CSS3实现水平居中、垂直居中、水平垂直居中的实例代码
2020/02/27 HTML / CSS
伦敦一家西班牙童装精品店:La Coqueta
2018/02/02 全球购物
LUISAVIAROMA中国官网:时尚奢侈品牌购物网站
2020/11/01 全球购物
园林设计师自荐信
2013/11/18 职场文书
白酒市场开发计划书
2014/01/09 职场文书
餐饮加盟计划书
2014/01/10 职场文书
无故旷工检讨书
2014/01/26 职场文书
初中生旷课检讨书范文
2014/10/06 职场文书
2014年技术工作总结范文
2014/11/20 职场文书
使用CSS实现一个搜索引擎的原理解析
2021/09/25 HTML / CSS