滑动窗口协议,滑动窗口机制
1.最小长度子阵列209。最小长度子阵列
中等难度1246收藏分享切换到英文接收动态反馈
给定一个包含n个正整数和一个正整数目标的数组。
求连续子数组[numsl,numsl1,numsr-1,numsr]最小长度满足其sum target,返回其长度。如果没有合格的子数组,则返回0。
示例1:
输入:target=7,nums=[2,3,1,2,4,3]
说明:子阵列[4,3]是这种情况下最短的子阵列。
示例2:
输入:目标=4,数量=[1,4,4]
输出:1
示例3:
输入:target=11,nums=[1,1,1,1,1,1,1,1]
输出:0
解决方案:
两个指针,开始和结束,移动方向相同。[start: end]窗口中的元素之和是否大于目标,如果是,缩小窗口范围(start前移)循环判断是否大于等于目标。
类别解决方案:
def minSubArrayLen(self,target: int,nums: List[int]) - int:
n=len(nums)
开始,结束=0,0
res=n 1
总计=0
同时结束n:
total=nums[end]
当总计=目标时:
res=min(res,结束-开始1)
total -=nums[start]
开始=1
End=1 #窗口右侧的指针向后移动。
如果res==n,则返回0,否则返回1
参考:长度最小的子阵列
转载请联系作者取得转载授权,否则将追究法律责任。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。