977
class Solution(object):
def sortedSquares(self, nums):
"""
:type nums: List[int]
:rtype: List[int]
"""
answer = [0] *len(nums)
l, r = 0, len(nums)-1
i = len(nums)-1
while l <= r:
if abs(nums[l]** 2) > abs(nums[r] ** 2):
answer[i] = abs(nums[l]**2)
i -=1
l +=1
else:
answer[i] = abs(nums[r]**2)
i -=1
r -=1
return answer
209
class Solution(object):
def minSubArrayLen(self, target, nums):
"""
:type target: int
:type nums: List[int]
:rtype: int
"""
i = 0
res = float('inf')
sum = 0
for j in range(len(nums)):
sum += nums[j]
while sum >= target:
sum -= nums[i]
sub_L = j -i +1
res = min(res,sub_L)
i +=1
return res if res != float('inf') else 0
904
from collections import defaultdict
class Solution(object):
def totalFruit(self, fruits):
"""
:type fruits: List[int]
:rtype: int
"""
d = defaultdict(int)
i,j = 0,0
for j, fruit in enumerate(fruits):
d[fruit] +=1
if len(d) >2:
d[fruits[i]] -=1
if d[fruits[i]] == 0:
del d[fruits[i]]
i +=1
return j -i +1
76
59
class Solution(object):
def generateMatrix(self, n):
"""
:type n: int
:rtype: List[List[int]]
"""
nums = [[0] * n for _ in range(n)]
startx, starty = 0, 0 # 起始点
loop, mid = n // 2, n // 2 # 迭代次数、n为奇数时,矩阵的中心点
count = 1 # 计数
for offset in range(1, loop + 1) : # 每循环一层偏移量加1,偏移量从1开始
for i in range(starty, n - offset) : # 从左至右,左闭右开
nums[startx][i] = count
count += 1
for i in range(startx, n - offset) : # 从上至下
nums[i][n - offset] = count
count += 1
for i in range(n - offset, starty, -1) : # 从右至左
nums[n - offset][i] = count
count += 1
for i in range(n - offset, startx, -1) : # 从下至上
nums[i][starty] = count
count += 1
startx += 1 # 更新起始点
starty += 1
if n % 2 != 0 : # n为奇数时,填充中心点
nums[mid][mid] = count
return nums