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的更多相关文章

  1. [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 ...

随机推荐

  1. 二进制安装MySQL数据库

    今天安装的是二进制的mysql包5.7.21的包,在配置文件的时候采了好多坑,左后还是搞定了,来和大家分享一下 二进制msyql5.7.21版本的主从复制安装 新建/picclife目录 mkdir  ...

  2. 印象笔记无法连服务器(internet explore的问题)

    https://www.zhihu.com/question/20214497?sort=created

  3. sklearn.model_selection.StratifiedShuffleSplit

    sklearn.model_selection.StratifiedShuffleSplit

  4. Python全栈之路----常用模块学习----模块的种类和导入方法

    什么是模块? 在计算机程序的开发过程中,随着程序代码越写越多,在一个文件里代码就会越来越长,越来越不容易维护. 为了编写可维护的代码,我们把很多函数分组,分别放到不同的文件里,这样,每个文件包含的代码 ...

  5. Js强制转换

    Js强制转换 ParseInt(a,b):整型 只能放字符串,b为基数.声明前面的数是几进制.因为只能放字符串,所以无论放什么都转换为字符串: 如果String以0x开头则为16进制的整数: ‘036 ...

  6. arch 安装准备--包管理的使用pacman

    -------https://wiki.archlinux.org/index.php/Pacman/Tips_and_tricks#List_of_installed_packageshttps:/ ...

  7. MyCat配置详解

    MyCAT 配置解析 server.xml Mycat的配置文件,设置账号.参数等schema.xml Mycat对应的物理数据库和数据库表的配置rule.xml Mycat分片(分库分表)规则 一 ...

  8. python:Hamlet英文词频统计

    #CalHamletV1.py def getText(): #定义函数读取文件 txt = open("hamlet.txt","r").read() txt ...

  9. cordova最小化app插件的使用: cordova-plugin-appminimize

    1. 添加插件:cordova plugin add cordova-plugin-appminimize 2.调用方法: window.plugins.appMinimize.minimize(); ...

  10. 细谈getRequestDispatcher()与sendRedirect()的区别

    问题?细谈getRequestDispatcher()与sendRedirect()的区别 首先我们要知道: (1)request.getRequestDispatcher()是请求转发,前后页面共享 ...