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 ...
随机推荐
- mysql在查询中常见问题汇总
1.从主从表中查询外键内容(常见问题) 从主从表中查询对应的外键,需要指定外键的表,即sno=> student.sno或者score.sno 错误:select sno,sname,degre ...
- 关于IT行业加班的问题
众所周知,所有行业中,IT行业加班最为严重,国内比较大的IT公司都有加班文化. 为什么要加班?有的时候加班是为了项目上线,因为正在运行的项目,在晚上的时候访问量是最小的,这个时候做系统更新是损失最小的 ...
- 对Enum的认识
1.如何把枚举值取出来作为数据源: public enum AuditState { 未审核 = 1, 审核通过=2, 审核未通过=3, ...
- vue调用支付接口
html: <div class="paymentHtml" v-html="paymentHtml"></div> script: d ...
- 求数组的相邻子数组的最大值(txt文件存储)
package mypackage; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.File ...
- spring mvc 为什么这么多xml
spring web mvc 处理流程 Architecture web.xml (webapp必要配置) 作用:spring web mvc 使用dispatcherServlet 分发reques ...
- s2第六章继承和多态
public class Employee { //年龄 public int Age { get; set; } //性别 public Gender Gender { get; set; } // ...
- 关于IE无法访问本机网络的问题
多次遇到IE无法访问本机站点的情况,比如架设了一个花生壳,所有人都可以访问,唯独本机不行(服务器),还需要把这个域名加入信任站点,这TMD什么情况.今天又遇到访问本地restful service,用 ...
- C# 比较两个路径是否指向同一对象
string path1 = @"c:\test\rootpath"; string path2 = @"C:\TEST\..\TEST\ROOTPATH"; ...
- PythonStudy——元组 Tuple
元组类型 元组:可以理解为不可变的列表1.值可以为任意类型2.可以存放多个值 - 可以进行成员运算3.可以存放重复的值 - 可以计算成员出现的次数4.有序存储 - 可以通过索引取值,可以切片 常用操作 ...