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 ...
随机推荐
- Spring案例1出纯注解开机
配置QueryRunner对象:注解说明 package cn.mepu.config; import org.apache.commons.dbutils.QueryRunner; import o ...
- 《提高c++性能的编程技术》读书笔记
一个程序的执行效率是取决于改程序翻译成汇编语言之后的执行的机器指令的条数.而每一个机器指令的执行的周期是一定的.C语言和C++都是高于汇编语言的高级语言,其中,C语言源代码与其相应的机器指不是完全同一 ...
- 在KVM虚拟化中如何实现vlan
换了好几个浏览器,都不能复制文字上来,不知道为什么.就发我的笔记截图吧
- redis主从复制和哨兵
摘自:https://www.cnblogs.com/leeSmall/p/8398401.html 一.Redis主从复制 主从复制:主节点负责写数据,从节点负责读数据,主节点定期把数据同步到从节点 ...
- nodejs mysql 连接数据库
1.设计数据库 2.设计数据库表 3.下载MySQL模块 npm install --save mysql 4.编写代码 const mysql=require('mysql'); //1.连接 // ...
- 项目到上传Gitee
1.码云上创建一个项目 testgit (名字随你) 2.本地创建一个文件夹D:/testgit,然后使用git bash 3.cd 到本地文件夹中D:/testgit, 4.使用 git init ...
- php 使用fseek指针读取大文件日志
function text($fp,$n,$b=5) { if($n>0){ $p = $n+1; $lines = array(); while(count($lines)< =$n){ ...
- JZOJ5153:树形图求和
Description Input Output HINT 题解: 一种很直观的想法是通过矩阵生成树求树形图方法数ans以及不包含某一条边i的树形图方法数ans[i],则答案为Σ(ans-ans[i] ...
- Python 列表,元组,字典
0)字符串切片 py_str = 'python' >>>py_str[0] #取第一个字符串,返回值为"p",超出范围会报错 >>>py_st ...
- NX二次开发-UFUN参数选择对话框UF_UI_select_parameters
#include <uf.h> #include <uf_ui.h> #include <uf_modl.h> UF_initialize(); //参数选择对话框 ...