主页 > 知识库 > PHP实现求连续子数组最大和问题2种解决方法

PHP实现求连续子数组最大和问题2种解决方法

热门标签:Mysql连接数设置 电子围栏 阿里云 团购网站 服务器配置 科大讯飞语音识别系统 Linux服务器 银行业务

本文实例讲述了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数组(Array)操作技巧大全》、《PHP常用遍历算法与技巧总结》、《php字符串(string)用法总结》、《php常用函数与技巧总结》、《PHP错误与异常处理方法总结》、《PHP基本语法入门教程》、《php面向对象程序设计入门教程》、《php+mysql数据库操作入门教程》及《php常见数据库操作技巧汇总》

希望本文所述对大家PHP程序设计有所帮助。

您可能感兴趣的文章:
  • PHP判断一个数组是另一个数组子集的方法详解
  • PHP获取数组最大值下标的方法
  • PHP查找数值数组中不重复最大和最小的10个数的方法
  • php获取数组中键值最大数组项的索引值
  • php求正负数数组中连续元素最大值示例
  • 求PHP数组最大值,最小值的代码
  • php数组函数序列之array_sum() - 计算数组元素值之和
  • php计算数组相同值出现次数的代码(array_count_values)
  • php计算多维数组中所有值总和的方法
  • PHP计算数组中值的和与乘积的方法(array_sum与array_product函数)
  • php常用数组array函数实例总结【赋值,拆分,合并,计算,添加,删除,查询,判断,排序】
  • PHP数组操作实例分析【添加,删除,计算,反转,排序,查找等】

标签:江苏 广元 大理 衡水 蚌埠 枣庄 萍乡 衢州

巨人网络通讯声明:本文标题《PHP实现求连续子数组最大和问题2种解决方法》,本文关键词  ;如发现本文内容存在版权问题,烦请提供相关信息告之我们,我们将及时沟通与处理。本站内容系统采集于网络,涉及言论、版权与本站无关。
  • 相关文章
  • 收缩
    • 微信客服
    • 微信二维码
    • 电话咨询

    • 400-1100-266