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+MYSQL 出现乱码的解决方法
Aug 08 PHP
php下图片文字混合水印与缩略图实现代码
Dec 11 PHP
php抓取页面与代码解析 推荐
Jul 23 PHP
php empty,isset,is_null判断比较(差异与异同)
Oct 19 PHP
php stream_get_meta_data返回值
Sep 29 PHP
PHP实现把MySQL数据库导出为.sql文件实例(仿PHPMyadmin导出功能)
May 10 PHP
php支付宝接口用法分析
Jan 04 PHP
基于GD2图形库的PHP生成图片缩略图类代码分享
Feb 08 PHP
php判断一个数组是否为有序的方法
Mar 27 PHP
PHP实现的随机IP函数【国内IP段】
Jul 20 PHP
thinkPHP5.0框架简单配置作用域的方法
Mar 17 PHP
Laravel jwt 多表(多用户端)验证隔离的实现
Dec 18 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 高手之路(一)
2006/10/09 PHP
php 异常处理实现代码
2009/03/10 PHP
php视频拍照上传头像功能实现代码分享
2015/10/08 PHP
Laravel5.1数据库连接、创建数据库、创建model及创建控制器的方法
2016/03/29 PHP
PHP去除空数组且数组键名重置的讲解
2019/02/28 PHP
Laravel5.1 框架Request请求操作常见用法实例分析
2020/01/04 PHP
Prototype使用指南之selector.js说明
2008/10/26 Javascript
JavaScript 获取用户客户端操作系统版本
2009/08/25 Javascript
jquery刷新页面的实现代码(局部及全页面刷新)
2011/07/11 Javascript
用javascript作一个通用向导说明
2011/08/30 Javascript
jquery 实现返回顶部功能
2014/11/17 Javascript
JS实现仿腾讯微博无刷新删除微博效果代码
2015/10/16 Javascript
vue实现添加标签demo示例代码
2017/01/21 Javascript
Node.js 使用递归实现遍历文件夹中所有文件
2017/09/18 Javascript
jQuery自动或手动图片切换效果
2017/10/11 jQuery
js 实现复选框只能选择一项的示例代码
2018/01/23 Javascript
NUXT SSR初级入门笔记(小结)
2019/12/16 Javascript
查找Vue中下标的操作(some和findindex)
2020/08/12 Javascript
Python使用MD5加密字符串示例
2014/08/22 Python
编写Python脚本来获取mp3文件tag信息的教程
2015/05/04 Python
Python cookbook(数据结构与算法)根据字段将记录分组操作示例
2018/03/19 Python
python pandas消除空值和空格以及 Nan数据替换方法
2018/10/30 Python
Django 全局的static和templates的使用详解
2019/07/19 Python
Python实现数值积分方式
2019/11/20 Python
python requests.get带header
2020/05/05 Python
浅谈Python里面None True False之间的区别
2020/07/09 Python
利用纯CSS3实现tab选项卡切换示例代码
2016/09/21 HTML / CSS
高档奢华时装在线目的地:FORWARD by elyse walker
2017/10/16 全球购物
限量版运动鞋和街头服饰:TheDrop
2020/09/06 全球购物
Swanson中国官网:美国斯旺森健康产品公司
2021/03/01 全球购物
乌克兰巴士票购买网站:inBus
2021/03/12 全球购物
一些.net面试题
2014/10/06 面试题
远程调用的原理
2014/07/05 面试题
办公自动化毕业生求职信
2014/03/09 职场文书
医院科室评语
2015/01/04 职场文书
2015年计划生育协会工作总结
2015/05/13 职场文书