找出两个不相交连续子数组的最大和
来源:互联网 发布:淘宝客服该怎么做 编辑:程序博客网 时间:2024/06/04 20:00
题目:
有一个整数数组n,a和b是n里两个互不相交的子数组。返回sum(a)+sum(b)的最大值。
分析:
新建两个数组left和right,left[i]表示n[0:i]的连续子数组的最大和,right[i]表示n[i:length-1]的连续子数组的最大和。left[i]+right[i+1]的最大值就是答案。
function twoSubArrayMaxSum($arr){ $len = count($arr); if($len < 2){ return false; } $right = array(); $cur = 0; $rmax = $arr[$len-1]; for($i=$len-1;$i>0;$i--){ $cur += $arr[$i]; $rmax = max($rmax,$cur); //从右边开始到左边对应下标下的最大和--只需统计到下标为1的 $right[$i] = $rmax; $cur = $cur >0 ? $cur: 0; } $res = $lmax = $arr[0]; $cur = 0; for($i=0;$i<$len-1;$i++){ $cur += $arr[$i]; $lmax = max($lmax,$cur); $res = max($res,$lmax+$right[$i+1]); $cur = $cur >0 ?: 0; } return $res;}
阅读全文
0 0
- 找出两个不相交连续子数组的最大和
- 【原题】求两个不相交的连续子数组的最大和
- 找出连续子数组的最大和
- 找出数组和最大的连续子序列
- 不相交最大子数组和
- 找出连续子向量的最大和
- 给定一个数组,找出这个和最大的连续子数组的和
- 【HDU1024】Max Sum Plus Plus (m个不相交连续子列的最大和)
- 在一个数组中找出和最大的一个连续的子数组串
- 数组连续子数组的和最大
- 数组连续子数组的最大和
- 最大连续子序列算法(数组的连续子数组最大和(首尾不相连))
- 一个数组中找出连续子向量的最大和 分治算法 扫描算法O(n)
- 连续子数组的最大和
- 连续子数组的最大和
- 连续子数组的最大和
- 求连续子数组的最大和
- 连续子数组的最大和
- centos 关闭防火墙以及关闭selinux方法
- strrchr
- HTML5 -- canvas实现简易画板
- 从0开始搭建阿里云(腾讯云)ubuntu16.04 nodejs + nginx + mysql + pm2 服务(二、搭建nginx环境)
- Blobs' Exhibition opentrains
- 找出两个不相交连续子数组的最大和
- 《Python全栈开发》学习过程笔记【3】
- input requried 提示文字修改
- js模拟QQ好友列表的实现
- 第十一届湖南大学生程序设计竞赛 阶乘除法(思维)
- Android 内存泄露分析
- Quick Sorting/Extract
- Extjs6.2 Form中组件的使用及正则验证
- SQL 如何创建索引