题目描述:给定一个数组,求和为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没会员,不能解锁,不能保证能过。但思路应该没问题。

相关文章:

  • 2021-07-16
  • 2022-12-23
  • 2021-09-13
  • 2021-12-29
  • 2021-06-26
  • 2021-11-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-07-24
  • 2022-12-23
  • 2022-12-23
  • 2022-02-28
  • 2022-12-23
相关资源
相似解决方案