题目描述:

方法一:O(N)

class Solution(object):
def maxSubArray(self, nums):
sum = 0
max_sub_sum = nums[0]
for num in nums:
sum += num
if sum > max_sub_sum:
max_sub_sum = sum
if sum < 0:
sum = 0
return max_sub_sum

二:O(N)/O(1)

class Solution(object):
def maxSubArray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
for i in range(1, len(nums)):
nums[i]= nums[i] + max(nums[i-1], 0)
return max(nums)

三:分治法 O(logn) O(logn)

class Solution {
public int maxSubArray(int[] nums) {
if (nums == null || nums.length <= 0)
return 0;
int len = nums.length;
return getInfo(nums,0,len - 1).mSum;
}
class wtevTree{
int lSum;
int rSum;
int iSum;
int mSum; wtevTree(int l, int r, int i, int m){
lSum = l;
rSum = r;
iSum = i;
mSum = m;
}
}
wtevTree pushUp(wtevTree leftT,wtevTree rightT){
int l = Math.max(leftT.lSum,leftT.iSum + rightT.lSum);
int r = Math.max(leftT.rSum + rightT.iSum,rightT.rSum);
int i = leftT.iSum + rightT.iSum;
int m = Math.max(leftT.rSum + rightT.lSum,Math.max(leftT.mSum,rightT.mSum));
return new wtevTree(l,r,i,m);
} wtevTree getInfo(int[] nums,int left,int right){
if(left == right)
return new wtevTree(nums[left],nums[left],nums[left],nums[left]);
int mid = (left + right) >> 1;
wtevTree leftT = getInfo(nums,left,mid);
wtevTree rightT = getInfo(nums,mid + 1,right);
return pushUp(leftT,rightT);
}
}

leetcood学习笔记-53*-最大子列和的更多相关文章

  1. [原创]java WEB学习笔记53:Struts2学习之路---前奏:使用 Filter 作为控制器的 MVC

    本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...

  2. leetcood学习笔记-168-excel表列名称

    题目描述: 方法一:asiic码 class Solution: def convertToTitle(self, n: int) -> str: if (n-1)//26 == 0: retu ...

  3. leetcood学习笔记-171-excel表列序号

    题目描述: 方法: class Solution: def titleToNumber(self, s: str) -> int: num = 0 r = 1 for i in s[::-1]: ...

  4. DataTable学习笔记---排序细则、列隐藏

    耽误了好几天,因为要做一个嵌入式的实验-android内核编译与裁剪,很久之前装的wubi不知道为什么运行出错了,然后看着当前的win7系统觉得有点讨厌了,也是因为快1年半没装机了,所以就重新装机了, ...

  5. Linux下汇编语言学习笔记53 ---

    这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...

  6. MySQL学习笔记:新增一列

    1.在一个已建好的表中,最后一列位置添加一列,可使用: ALTER TABLE aa_numbers_small ADD COLUMN date_time DATE NOT NULL; 2.添加一列到 ...

  7. leetcood学习笔记-20

    python字符串与列表的相互转换   学习内容: 1.字符串转列表 2.列表转字符串 1. 字符串转列表 str1 = "hi hello world" print(str1.s ...

  8. leetcood学习笔记-14*-最长公共前缀

    笔记: python if not   判断是否为None的情况 if not x if x is None if not x is None if x is not None`是最好的写法,清晰,不 ...

  9. leetcood学习笔记-54-螺旋矩阵

    题目描述: 第一次提交: class Solution: def spiralOrder(self, matrix: List[List[int]]) -> List[int]: j,x = 0 ...

随机推荐

  1. Java 8 终于支持 Docker !

    ];      v.add(b);      Runtime rt = Runtime.getRuntime();      System.out.println( "free memory ...

  2. javascript中的insertBefore方法

    <SCRIPT LANGUAGE="JavaScript"> window.onload=function(){ var a =document.createEleme ...

  3. css3 一个六边形 和 放大旋转动画DEMO演示

    <!DOCTYPE html> <html> <head> <meta charset="gb2312"> <title> ...

  4. Async await 异步编程说明

    希望在编程上有些许提高所以 最近连续2篇博客都在说明多线程和异步编程的使用,异步和多线程之间区别请自行百度,因为理解不是特别透彻就不在叙述以免误导大家,这里写下新研究整理 task  和 await ...

  5. redis设置自动启动

    按照如下操作即可(可以自定义目录) mkdir /redis cd /redis wget http://download.redis.io/releases/redis-4.0.1.tar.gz t ...

  6. rsync+inotify同步备份文件

    前言 rsync作用:man rsync可以看到解释为a fast, versatile, remote (and local) file-copying tool,主要进行文件的同步. inotif ...

  7. URLSearchParams接口用来处理浏览器的url

    URLSearchParams 接口定义了一些实用的方法来处理 URL 的查询字符串. URLSearchParams.append()插入一个指定的键/值对作为新的搜索参数. URLSearchPa ...

  8. js面向对象的几种方式----工厂模式、构造函数模式、原型模式

    对象的字面量 var obj={} 创建实例对象 var obj=new Object() 工厂模式 function cPerson(name,sex,age){ var o = new Objec ...

  9. Zookeeper_ZAB协议

    ZAB协议 ZAB协议简介 ZAB:(Zookeeper Atomic Broadcast),zk原子消息广播协议,是专为ZK设计的一中支持崩溃恢复的原子广播协议,是一种Paxos协议的优化算法,在Z ...

  10. DELPHI读取网页源文件和获取字符串

    说到网页采集,通常大家以为到网上偷数据,然后把到收集到的数据挂到自己网上去.其实也可以将采集到的数据做为公司的参考,或把收集的数据跟自己公司的业务做对比等.目前网页采集多为3P代码为多(3P即ASP. ...