ITPub博客

首页 > 应用开发 > Python > 算法:最大子序和 笔试题

算法:最大子序和 笔试题

Python 作者:一只小木鱼 时间:2020-12-25 14:19:03 0 删除 编辑

最大子序和

  • 题目描述
  • 代码
  • 程序执行过程

题目描述

给定一个整数数组 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/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2020-12-24

  • 博文量
    12
  • 访问量
    6201