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 相关文章推荐
建立动态的WML站点(三)
Oct 09 PHP
php数组函数序列之array_combine() - 数组合并函数使用说明
Oct 29 PHP
ubuntu10.04配置 nginx+php-fpm模式的详解
Jun 03 PHP
基于php split()函数的用法详解
Jun 05 PHP
PHP自定义函数获取URL中一级域名的方法
Aug 23 PHP
php解析base64数据生成图片的方法
Dec 06 PHP
php获取目录中所有文件名及判断文件与目录的简单方法
Mar 04 PHP
PHP 实现字符串翻转(包含中文汉字)的实现代码
Apr 01 PHP
php实现的rc4加密解密类定义与用法示例
Aug 16 PHP
微信公众号之主动给用户发送消息功能
Jun 22 PHP
基于PHP+Mysql简单实现了图书购物车系统的实例详解
Aug 06 PHP
php+laravel 扫码二维码签到功能
May 15 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 阴历-农历-转换类代码
2012/01/16 PHP
php笔记之:AOP的应用
2013/04/24 PHP
Laravel 5框架学习之Blade 简介
2015/04/08 PHP
Yii2基于Ajax自动获取表单数据的方法
2016/08/10 PHP
Yii2 加载css、js 载静态资源的方法
2017/03/10 PHP
Thinkphp 框架基础之源码获取、环境要求与目录结构分析
2020/04/27 PHP
深入聊聊Array的sort方法的使用技巧.详细点评protype.js中的sortBy方法
2007/04/12 Javascript
javascript之ESC(第二类混淆)
2007/05/06 Javascript
函数式 JavaScript(一)简介
2014/07/07 Javascript
JS基于正则截取替换特定字符之间字符串操作示例
2017/02/03 Javascript
Node.js发送HTTP客户端请求并显示响应结果的方法示例
2017/04/12 Javascript
angularjs 动态从后台获取下拉框的值方法
2018/08/13 Javascript
Vue表单输入绑定的示例代码
2018/11/01 Javascript
Vue项目中配置pug解析支持
2019/05/10 Javascript
微信小程序全局变量的设置、使用、修改过程解析
2019/09/24 Javascript
python求斐波那契数列示例分享
2014/02/14 Python
CentOS中使用virtualenv搭建python3环境
2015/06/08 Python
使用paramiko远程执行命令、下发文件的实例
2017/10/01 Python
Python数据类型之Set集合实例详解
2019/05/07 Python
python的依赖管理的实现
2019/05/14 Python
使用django的ORM框架按月统计近一年内的数据方法
2019/07/18 Python
Django之使用celery和NGINX生成静态页面实现性能优化
2019/10/08 Python
利用python绘制数据曲线图的实现
2020/04/09 Python
Python加速程序运行的方法
2020/07/29 Python
Python Opencv轮廓常用操作代码实例解析
2020/09/01 Python
微信小程序“圣诞帽”的实现思路详解
2017/12/28 HTML / CSS
美国一家著名的手表在线折扣网站:Discount Watch Store
2020/02/24 全球购物
我的网上商城创业计划书
2013/12/26 职场文书
计划生育证明格式范本
2014/09/12 职场文书
中学生旷课检讨书模板
2014/10/08 职场文书
2014年青年志愿者工作总结
2014/12/09 职场文书
商务英语求职信范文
2015/03/19 职场文书
通知的写法
2015/04/23 职场文书
英语教学课后反思
2016/02/15 职场文书
python入门学习关于for else的特殊特性讲解
2021/11/20 Python
nginx搭建NFS网络文件系统
2022/04/14 Servers