leetcood学习笔记-53*-最大子列和
题目描述:

方法一: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*-最大子列和的更多相关文章
- [原创]java WEB学习笔记53:Struts2学习之路---前奏:使用 Filter 作为控制器的 MVC
本博客的目的:①总结自己的学习过程,相当于学习笔记 ②将自己的经验分享给大家,相互学习,互相交流,不可商用 内容难免出现问题,欢迎指正,交流,探讨,可以留言,也可以通过以下方式联系. 本人互联网技术爱 ...
- leetcood学习笔记-168-excel表列名称
题目描述: 方法一:asiic码 class Solution: def convertToTitle(self, n: int) -> str: if (n-1)//26 == 0: retu ...
- leetcood学习笔记-171-excel表列序号
题目描述: 方法: class Solution: def titleToNumber(self, s: str) -> int: num = 0 r = 1 for i in s[::-1]: ...
- DataTable学习笔记---排序细则、列隐藏
耽误了好几天,因为要做一个嵌入式的实验-android内核编译与裁剪,很久之前装的wubi不知道为什么运行出错了,然后看着当前的win7系统觉得有点讨厌了,也是因为快1年半没装机了,所以就重新装机了, ...
- Linux下汇编语言学习笔记53 ---
这是17年暑假学习Linux汇编语言的笔记记录,参考书目为清华大学出版社 Jeff Duntemann著 梁晓辉译<汇编语言基于Linux环境>的书,喜欢看原版书的同学可以看<Ass ...
- MySQL学习笔记:新增一列
1.在一个已建好的表中,最后一列位置添加一列,可使用: ALTER TABLE aa_numbers_small ADD COLUMN date_time DATE NOT NULL; 2.添加一列到 ...
- leetcood学习笔记-20
python字符串与列表的相互转换 学习内容: 1.字符串转列表 2.列表转字符串 1. 字符串转列表 str1 = "hi hello world" print(str1.s ...
- leetcood学习笔记-14*-最长公共前缀
笔记: python if not 判断是否为None的情况 if not x if x is None if not x is None if x is not None`是最好的写法,清晰,不 ...
- leetcood学习笔记-54-螺旋矩阵
题目描述: 第一次提交: class Solution: def spiralOrder(self, matrix: List[List[int]]) -> List[int]: j,x = 0 ...
随机推荐
- Java 8 终于支持 Docker !
]; v.add(b); Runtime rt = Runtime.getRuntime(); System.out.println( "free memory ...
- javascript中的insertBefore方法
<SCRIPT LANGUAGE="JavaScript"> window.onload=function(){ var a =document.createEleme ...
- css3 一个六边形 和 放大旋转动画DEMO演示
<!DOCTYPE html> <html> <head> <meta charset="gb2312"> <title> ...
- Async await 异步编程说明
希望在编程上有些许提高所以 最近连续2篇博客都在说明多线程和异步编程的使用,异步和多线程之间区别请自行百度,因为理解不是特别透彻就不在叙述以免误导大家,这里写下新研究整理 task 和 await ...
- redis设置自动启动
按照如下操作即可(可以自定义目录) mkdir /redis cd /redis wget http://download.redis.io/releases/redis-4.0.1.tar.gz t ...
- rsync+inotify同步备份文件
前言 rsync作用:man rsync可以看到解释为a fast, versatile, remote (and local) file-copying tool,主要进行文件的同步. inotif ...
- URLSearchParams接口用来处理浏览器的url
URLSearchParams 接口定义了一些实用的方法来处理 URL 的查询字符串. URLSearchParams.append()插入一个指定的键/值对作为新的搜索参数. URLSearchPa ...
- js面向对象的几种方式----工厂模式、构造函数模式、原型模式
对象的字面量 var obj={} 创建实例对象 var obj=new Object() 工厂模式 function cPerson(name,sex,age){ var o = new Objec ...
- Zookeeper_ZAB协议
ZAB协议 ZAB协议简介 ZAB:(Zookeeper Atomic Broadcast),zk原子消息广播协议,是专为ZK设计的一中支持崩溃恢复的原子广播协议,是一种Paxos协议的优化算法,在Z ...
- DELPHI读取网页源文件和获取字符串
说到网页采集,通常大家以为到网上偷数据,然后把到收集到的数据挂到自己网上去.其实也可以将采集到的数据做为公司的参考,或把收集的数据跟自己公司的业务做对比等.目前网页采集多为3P代码为多(3P即ASP. ...