题目描述:

方法一: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);
}
}

最新文章

  1. Java使用Fork/Join框架来并行执行任务
  2. [Android Pro] listView和GridView的item设置的高度和宽度不起作用
  3. Eclipse通过jdbc连接oracle数据库
  4. 【GoLang】GoLang 中 make 与 new的区别
  5. iOS 实时监听app的网络连接状态
  6. 使用java连接hive,并执行hive语句详解
  7. linux中grep使用方法具体解释
  8. form 表单 设置编码和页面编码
  9. JMeterPluginsCMD Command Line Tool
  10. mybatis sql循环的使用
  11. 刚买个炼狱蝰蛇1800dpi的下完驱动提示没有发现鼠标
  12. 排序算法之NB三人组
  13. Python机器学习中文版
  14. XML详解二XML的解析与创建
  15. Redis 持久化之RDB和AOF
  16. hdu 2159FATE(完全背包)
  17. list 转datatable
  18. Build Laravel Blog PigJian by PHP7 and Nginx on Ubuntu
  19. 自定义事件 js
  20. JavaScript创建对象的4种方法

热门文章

  1. 40-Ubuntu-用户管理-05-which查看命令所在位置
  2. js 实用封装 点击按钮复制到剪贴板
  3. AVR446步进电机算法推导及应用
  4. 结对编程-Core 第12组 [pb15061359+pb15061351]
  5. Ubuntu 更新国内镜像源失败
  6. metasploit5配置数据库
  7. vimtutor - Vim 教程
  8. final、finally和finalized的区别?
  9. Centos 14: problem making ssl connection
  10. SQL Server 中根据字段值查询其所在的表、字段