【python-leetcode325-滑动窗口法】最大子数组之和为k

时间:2022-07-23
本文章向大家介绍【python-leetcode325-滑动窗口法】最大子数组之和为k,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

题目描述:给定一个数组,求和为k的最大子数组的长度,子数组是指连续的一段数组。

比如[1,-1,5,-2,-3],k=3,那么输出为4,因为1+-1+5+-2=3。

def solution(a,k):
    #用于记录当前最大值
    tmp = 0
    #步长i从1到len(a)+1
    for i in range(1,len(a)+1):
        #j:表示窗口左端
        for j in range(len(a)-i+1):
            print(a[j:j+i])
            #如果当前窗口的和为k,则当前最大值就是tmp和步长得最大值
            if sum(a[j:j+i]) == k:
                tmp = max(tmp,i)
                print(tmp)
    return tmp

过程:

[1] [-1] [5] [-2] [-3] [1, -1] [-1, 5] [5, -2] 2 [-2, -3] [1, -1, 5] [-1, 5, -2] [5, -2, -3] [1, -1, 5, -2] 4 [-1, 5, -2, -3] [1, -1, 5, -2, -3]

由于leetcode没会员,不能解锁,不能保证能过。但思路应该没问题。