讲解
题目及题解
题目链接:977. 有序数组的平方
- 提前定义数组
- 双指针
class Solution:
def sortedSquares(self, nums: List[int]) -> List[int]:
numsn = [float(inf)]*len(nums)
l,r,i = 0,len(nums)-1,len(nums)-1
while l <= r:
if nums[l]**2 > nums[r]**2:
numsn[i] = nums[l]**2
l += 1
else:
numsn[i] = nums[r]**2
r -= 1
i -= 1
return numsn
题目链接:209. 长度最小的子数组
- 滑动窗口
class Solution:
def minSubArrayLen(self, target: int, nums: List[int]) -> int:
left,sums,res,length = 0,0,float(inf),len(nums)
for j in range(length):
sums = sums + nums[j]
while sums >= target:
rtmp = j - left + 1
res = min(rtmp,res)
left += 1
sums -= nums[left-1]
if res != float(inf):
return res
else:
return 0
题目链接:59. 螺旋矩阵 II
-
每条边左闭右开
class Solution:
def generateMatrix(self, n: int) -> List[List[int]]:
ret = [[0]*n for _ in range(n)]
startx,starty = 0,0
offset,count = 1,1
num = n//2
while num:
for j in range(starty,n-offset):
ret[startx][j] = count
count += 1
for i in range(startx,n-offset):
ret[i][j+1] = count
count += 1
for j in range(n-offset,starty,-1):
ret[i+1][j] = count
count += 1
for i in range(n-offset,startx,-1):
ret[i][starty] = count
count += 1
num -= 1
offset += 1
startx += 1
starty += 1
if n%2 == 1:
ret[startx][starty] = count
return ret