加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

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

发布时间:2020-12-20 09:55:01 所属栏目:Python 来源:网络整理
导读:题目描述:给定一个数组,求和为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:表示窗口

题目描述:给定一个数组,求和为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,5]
[-1,-2]
[5,-2]
4
[-1,-3]

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读