leetcode1031
class Solution(object):
def getMaxByCount(self,A,maxlen):
curmax = 0
curmax = sum(A[:maxlen])
bigmax = curmax
n = len(A)
for i in range(maxlen,n):
curmax = curmax-A[i-maxlen]+A[i]
if curmax > bigmax:
bigmax = curmax return bigmax def maxSumTwoNoOverlap(self, A: 'List[int]', L: int, M: int) -> int:
minlen = min(L,M)
maxlen = max(L,M)
n = len(A)
allmax = self.getMaxByCount(A,L+M) bigmax = sum(A[:maxlen])
litmax = self.getMaxByCount(A[maxlen:],minlen)
allmax = max(allmax,bigmax+litmax) for i in range(maxlen,n):
bigmax = bigmax - A[i-maxlen] + A[i]
lefttag = i-maxlen+1
A1 = A[0:lefttag]
litlen1 = self.getMaxByCount(A1,minlen)
righttag = i
A2 = A[righttag+1:]
litlen2 = self.getMaxByCount(A2,minlen)
litmax = max(litlen1,litlen2)
allmax = max(allmax,bigmax+litmax)
return allmax
getMaxByCount()方法是在A中选择连续maxlen长度的最大和。
先求L+M个连续区间的最大值,作为最基本的选择,记为allmax。
再进行一次遍历(从maxlen~n),每次选择maxlen个(L和M中更大的那个数)长度的区间,计算这个区间的和,记为bigmax。
然后将原数组一分为二,分别计算剩下的两个子集连续minlen个(L和M中更小的那个数)长度的区间的和,分别记为litlen1,litlen2。
litlen1和litlen2的更大的和,作为minlen长度的最大和,记为litmax。
每次循环内部,将allmax与bigmax+litmax进行比较,allmax中保留更大的值。
循环完毕,allmax就是最大和。
leetcode1031的更多相关文章
- [Swift]LeetCode1031. 两个非重叠子数组的最大和 | Maximum Sum of Two Non-Overlapping Subarrays
Given an array A of non-negative integers, return the maximum sum of elements in two non-overlapping ...
随机推荐
- nmon监控与 nmon analyser分析
参考 https://www.cnblogs.com/wnfindbug/p/5719181.html 1.下载 nmon https://zh.osdn.net/projects/sfnet_nmo ...
- elasticsearch 使用快照进行备份
Elasticsearch也提供了备份集群中索引数据的策略——snapshot API.它会备份整个集群的当前状态和数据,并保存到集群中各个节点共享的仓库中.这个备份的进程是增量备份的,在第一次备份的 ...
- MVVM设计模式加RAC响应式编程
一:为什么要用MVVM? 为什么要用MVVM?只是因为它不会让我时常懵逼. 每次做完项目过后,都会被自己庞大的ViewController代码吓坏,不管是什么网络请求.networking data ...
- 《Linux内核原理与分析》第二周作业
反汇编一个简单的C程序 1.实验要求 使用: gcc –S –o test.s test.c -m32 命令编译成汇编代码,对汇编代码进行分析总结.其中test.c的具体内容如下: int g(int ...
- nodejs----初期学习笔记
//一 回调函数 //require---命令//Node 使用了大量的回调函数,Node 所有 API 都支持回调函数.//例如,我们可以一边读取文件,一边执行其他命令,在文件读取完成后,我们将文件 ...
- 中国商用分组密码SM4
SM4 密码算法结构 SM4 密码算法基本运算有两部分: 1.模2加:⊕,32比特异或运算 2.循环移位: <<< i ,把32位字循环左移i位 基本密码部件为 1非线性字节变换S盒 ...
- 使用VS2015编译grpc_1.3.1
环境: win7_x64,VS2015 开始: 一.安装工具 1. 安装cmake 2. 安装ActivePerl 3. 安装golang 4. 安装nasm 验证安装是否安装成功: cmake -v ...
- pass
空语句 do nothing 保证格式完整 保证语义完整 以if语句为例,在c或c++/java中: if(true) ; //do nothing else { //do something } 1 ...
- 第3章 Vim使用笔记
3.1 vi使用map自定义快捷方式 [想要永久保存定义的快捷键在-/.vimrc[进入root后才能看到~/.vimrc文件]中编辑保存即可!] set nu 输入下列命令[:map <spe ...
- OkHttp官方中文文档
https://blog.csdn.net/jackingzheng/article/details/51778793 https://www.cnblogs.com/ldq2016/p/879630 ...