53. Maximum Subarray
O(n)
  1. import sys
  2. from typing import List
  3.  
  4. class Solution:
  5. def maxSubArray(self, nums: List[int]) -> int:
  6. m = -sys.maxsize-1 # global max value
  7. mt = 0 # sub array max value
  8.  
  9. for i in range(len(nums)):
  10. mt += nums[i]
  11. if mt > m:
  12. m = mt
  13. if mt < 0:
  14. mt = 0
  15. #print(i, mt, m, nums[i])
  16. return m
  17.  
  18. def main():
  19. s = Solution()
  20.  
  21. print(s.maxSubArray([-2,1,-3,4,-1,2,1,-5,4]))
  22. print(s.maxSubArray([-1]))
  23.  
  24. if __name__ == '__main__':
  25. main()
Reference
  • Geeksforgeeks