LeetCode Hot 100(ACM 模式)- labuladong 的算法笔记
刷题顺序:按照类型,每次取一道出来,轮流刷题;避免类型依赖
class Solution:
def twoSum(self, nums: List[int], target: int) -> List[int]:
d={}
for i in range(len(nums)):
if target-nums[i] in d.keys():
return [d[target-nums[i]],i]
d[nums[i]]=i
class Solution:
def moveZeroes(self, nums: List[int]) -> None:
N=len(nums)
l=0
while l<N and nums[l]!=0:
l+=1
r=l+1
while r<N and nums[r]==0:
r+=1
while r<N:
nums[l],nums[r]= nums[r],nums[l]
while r<N and nums[r]==0:
r+=1
l+=1
空间复杂度:O(m+n)解法
class Solution:
def setZeroes(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
"""
m=len(matrix)
n=len(matrix[0])
rows=m*[False] #第i行是否存在0
cols=n*[False]
for i in range(m):
for j in range(n):
if matrix[i][j]==0:
rows[i]=True
cols[j]=True
for i in range(m):
for j in range(n):
if rows[i] or cols[j]:
matrix[i][j]=0