class Solution(object):
def maxSubArray(self, nums):
"""
:type nums: List[int]
:rtype: int
"""
for i in range(1,len(nums)):
nums[i] += max(nums[i-1],0)
return max(nums)
class Solution:
def rob(self, nums: List[int]) -> int:
res = 0
a = len(nums)
if not nums:
return 0
if len(nums) < 3:
return max(nums)
nums[1] = max(nums[0],nums[1])
for i in range(2,a):
nums[i] = max(nums[i]+nums[i-2],nums[i-1])
return nums[-1]
笔试追加:124. 二叉树中的最大路径和
class Solution(object):
def maxPathSum(self, root):
"""
:type root: TreeNode
:rtype: int
"""
self.res = float('-inf')
self.s(root)
return self.res
def s(self,root):
if not root:
return 0
left = max(0,self.s(root.left))
right = max(0,self.s(root.right))
self.res = max(self.res, left + root.val + right)
return root.val + max(left,right)