首页 > 应用开发 > Python > 算法:最大子序和 笔试题
给定一个整数数组 nums ,找到一个具有最大和的连续子数组(子数组最少包含一个元素),返回其最大和。
示例:
输入: [-2,1,-3,4,-1,2,1,-5,4]
输出: 6
解释: 连续子数组 [4,-1,2,1] 的和最大,为 6。
import pysnooper class Solution: @pysnooper.snoop()#pysnooper是装饰器,可以修改函数,作用是打印函数的参数 def maxSubArray(self , nums ): # write code here long=len(nums) new_array = nums[0] temp = nums[0] for i in range(1,long): new_array = max(nums[i],new_array + nums[i]) temp = max(new_array, temp) result =temp return result nums = [-2,1,-3,4,-1,2,1,-5,4] s = Solution() print(s.maxSubArray(nums))
Starting var:.. nums = [-2, 1, -3, 4, -1, 2, 1, -5, 4] 23:20:47.207620 call 5 def maxSubArray(self , nums ): 23:20:47.207620 line 7 long=len(nums) New var:....... long = 9 23:20:47.207620 line 8 new_array = nums[0] New var:....... new_array = -2 23:20:47.207620 line 9 temp = nums[0] New var:....... temp = -2 23:20:47.207620 line 10 for i in range(1,long): New var:....... i = 1 23:20:47.207620 line 11 new_array = max(nums[i],new_array + nums[i]) Modified var:.. new_array = 1 23:20:47.207620 line 12 temp = max(new_array, temp) Modified var:.. temp = 1 23:20:47.207620 line 10 for i in range(1,long): Modified var:.. i = 2 23:20:47.207620 line 11 new_array = max(nums[i],new_array + nums[i]) Modified var:.. new_array = -2 23:20:47.207620 line 12 temp = max(new_array, temp) 23:20:47.208598 line 10 for i in range(1,long): Modified var:.. i = 3 23:20:47.208598 line 11 new_array = max(nums[i],new_array + nums[i]) Modified var:.. new_array = 4 23:20:47.208598 line 12 temp = max(new_array, temp) Modified var:.. temp = 4 23:20:47.208598 line 10 for i in range(1,long): Modified var:.. i = 4 23:20:47.208598 line 11 new_array = max(nums[i],new_array + nums[i]) Modified var:.. new_array = 3 23:20:47.208598 line 12 temp = max(new_array, temp) 23:20:47.208598 line 10 for i in range(1,long): Modified var:.. i = 5 23:20:47.208598 line 11 new_array = max(nums[i],new_array + nums[i]) Modified var:.. new_array = 5 23:20:47.208598 line 12 temp = max(new_array, temp) Modified var:.. temp = 5 23:20:47.208598 line 10 for i in range(1,long): Modified var:.. i = 6 23:20:47.208598 line 11 new_array = max(nums[i],new_array + nums[i]) Modified var:.. new_array = 6 23:20:47.208598 line 12 temp = max(new_array, temp) Modified var:.. temp = 6 23:20:47.208598 line 10 for i in range(1,long): Modified var:.. i = 7 23:20:47.208598 line 11 new_array = max(nums[i],new_array + nums[i]) Modified var:.. new_array = 1 23:20:47.208598 line 12 temp = max(new_array, temp) 23:20:47.208598 line 10 for i in range(1,long): Modified var:.. i = 8 23:20:47.208598 line 11 new_array = max(nums[i],new_array + nums[i]) Modified var:.. new_array = 5 23:20:47.208598 line 12 temp = max(new_array, temp) 23:20:47.208598 line 10 for i in range(1,long): 23:20:47.208598 line 13 result =temp New var:....... result = 6 23:20:47.208598 line 14 return result 23:20:47.208598 return 14 return result Return value:.. 6 Elapsed time: 00:00:00.000978 6
文章来源:CSDN-小周同学啦啦啦
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69991606/viewspace-2745264/ ,如需转载,请注明出处,否则将追究法律责任。