classSolution:defminSubArrayLen(self, target:int, nums: List[int])->int:
left =0# left表示滑动窗口的起始点
res =float('inf')# float('inf')表示无穷大
total =0# 记录滑动窗口中的和
length =len(nums)for right inrange(length):# right表示滑动窗口的终点
total += nums[right]while total >= target:
l = right - left +1
res =min(l, res)
total -= nums[left]
left +=1if res ==float('inf'):# 说明在遍历过程中,初始的res始终没有被替换,即nums的总和小于targetreturn0else:# res被替换了,说明有满足条件的return res
螺旋矩阵
https://leetcode.cn/problems/spiral-matrix-ii/
思路
每遍历一条边时,保持循环不变量原则,即每一条边都遵循左闭右开[)的原则
classSolution:defgenerateMatrix(self, n:int)-> List[List[int]]:
arr =[[None]*n for _ inrange(n)]# 先申请好一段二维数组
startx, starty =0,0# 每遍历一圈的起始位置
offset =1# 右开
count =1# 技术器
loop = n //2# 总共螺旋的圈数
mid = n //2# 若n为奇数,则最中间元素的坐标while loop >0:for y inrange(starty, n - offset):# 上边
arr[startx][y]= count
count+=1for x inrange(startx, n - offset):# 右边
arr[x][n - offset]= count
count+=1for y inrange(n - offset, starty,-1):# 下边
arr[n - offset][y]= count
count+=1for x inrange(n - offset, startx,-1):# 左边
arr[x][starty]= count
count+=1
startx +=1
starty +=1
offset +=1
loop -=1if n%2==1:# 若n为奇数
arr[mid][mid]= n*n
return arr