本文实例讲述了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实现求连续子数组最大和问题2种解决方法相关推荐

  1. eclipse中不能找到dubbo.xsd报错”cvc-complex-type.2.4.c“的 两种解决方法

    配置dubbo环境过程中的xml文件,安装官网的demo配置好后,出错: "Description Resource Path Location Type cvc-complex-type. ...

  2. 第五人格服务器维修中怎么进,第五人格联合狩猎进不去怎么办 四种解决方法介绍...

    1.方法一.好友组队邀请.就是让能进入联合狩猎的小伙伴拉你组队,然后就能玩了,但打完一把后要散队重开,不然不能开下一把. 2.方法二.修改手机型号.只要把你的手机型号改成一些主流手机型号就好,这个风险 ...

  3. python如何将数组里的数提取出来_python [:3] 实现提取数组中的数

    搜索答案搜索不到,自己试了一把. 首先生成一维数组 a =np.array([1,2,3,4,5,6,7,8,9]) >>> print a [1 2 3 4 5 6 7 8 9] ...

  4. 取数组中最大值和最小值

    将数组中第一个元素赋值给一个变量,并且把这个变量作为最大值: 开始遍历数组,从第二个元素开始依次和第一个元素进行比较 如果当前的元素大于当前的最大值,就把当前的元素值赋值给最大值 移动到下一个元素,继 ...

  5. python二维数组表示_python中二维数组中的数如何表达

    python二维数组如何挑选出一定范围的数值? 比如说有一个二维数组 13.1 13.2 13.3 13.4 15.5 15.0 45.2 22.3 22.3 3 [j for i in a for ...

  6. 1145: 零起点学算法52——数组中删数II

    1145: 零起点学算法52--数组中删数II Time Limit: 1 Sec  Memory Limit: 64 MB   64bit IO Format: %lld Submitted: 29 ...

  7. 找出数组中两数之和为指定值的所有整数对

    一,问题描述 给定一个整型数组(数组中的元素可重复),以及一个指定的值.打印出数组中两数之和为指定值的 所有整数对 二,算法分析 一共有两种方法来求解.方法一借助排序,方法二采用HashSet 方法一 ...

  8. 数组对象,如何取数组中的最小值和最大值

    需求:后端数据返回中,在数据里面需要取最先开始的时间和结束的时间,等于取数组中的最小值和最大值 newCategory() {let new1 = this.data.newList.map((ite ...

  9. 将一个数组中的数右边为复数,左边为正数,中间为0

    将一个数组中的数右边为复数,左边为正数,中间为0(不考虑大小) #include<iostream> using namespace std; void sort(int* a, int ...

最新文章

  1. 拼多多黄峥给陆奇“兼职”,欲挖掘这类AI人才
  2. mysql隐藏密码_MySQL在Linux系统中隐藏命令行中的密码的方法
  3. leetcode算法题--数组中数字出现的次数 II
  4. 笔记-信息系统开发基础-架构设计-软件体系结构评估方式
  5. python 多行字符串拼接_零基础学python的第71天
  6. 用installshield打包的asp.net程序
  7. 另一种声音:容器是不是未来?
  8. 工程项目成本/进度综合控制方法及应用
  9. 2021年11月Python小屋编程比赛获奖名单
  10. thrift的lua实现
  11. JS记坑 ----- 在父节点中添加删除子节点
  12. i5 7200u 计算机专业,i5 7200U理论性能对比_笔记本评测-中关村在线
  13. vmware安装报错及注册时无权输入许可证密钥的解决办法及步骤
  14. C语言编写飞机大战程序,C语言实现简单飞机大战
  15. 如何修改PDF内容,PDF怎么旋转页面
  16. 实训日记(二)——分镜
  17. linux eclipse glib.h,eclipse Glib
  18. 如何运营好微信公众号
  19. cas4.0实现多种方式邮箱/手机号码登录及认证
  20. 计算机网络码片序列计算问题

热门文章

  1. Python标准库asyncio模块基本原理浅析
  2. C语言指针表示二维数组的方法!_只愿与一人十指紧扣_新浪博客
  3. ​别再用方括号在Python中获取字典的值,试试这个方法
  4. 基于OpenCV提取特定区域
  5. 计算机视觉四大基本任务(分类、定位、检测、分割)
  6. 【OpenCV 4开发详解】均值滤波
  7. 第6章——广度优先搜索
  8. 神经网络中参数数量的计算
  9. “阿里巴巴大数据系统体系”学习笔记-纲领篇
  10. 当对象或对象属性为空时,如何安全给对象或对象属性添加默认值