classSolution:
def plusOne(self, digits: List[int])-> List[int]:
n =len(digits)for i in range(n-1,-1,-1):if digits[i]!=9:
digits[i]+=1for j in range(i+1, n):
digits[j]=0return digits
return[1]+[0]*n
寻找数组的中心下标
classSolution:
def pivotIndex(self, nums: List[int])->int:
n =len(nums)
sum1 =0
total =sum(nums)for i in range(0, n,1):if2*sum1 + nums[i]== total:return i
else:
sum1 += nums[i]return-1
轮转数组
classSolution:
def reverse(self, list, start, end):
temp =0while(start < end):
temp = list[start]
list[start]= list[end]
list[end]= temp
start +=1
end -=1
def rotate(self, nums, k):"""
Do notreturn anything, modify nums in-place instead."""
n =len(nums)
k %= n
self.reverse(nums,0, n-1)
self.reverse(nums,0, k-1)
self.reverse(nums, k, n-1)return nums
旋转图像
classSolution:
def rotate(self, matrix: List[List[int]])-> None:
n =len(matrix)#Python 这里不能 matrix_new = matrix 或 matrix_new = matrix[:] 因为是引用拷贝
matrix_new =[[0]* n for _ in range(n)]for i in range(n):for j in range(n):
matrix_new[j][n - i -1]= matrix[i][j]
# 不能写成 matrix = matrix_new
matrix[:]= matrix_new
classSolution:
def rotate(self, matrix: List[List[int]])-> None:
n =len(matrix)for i in range(n // 2):for j in range((n +1)// 2):
matrix[i][j], matrix[n - j -1][i], matrix[n - i -1][n - j -1], matrix[j][n - i -1] \
= matrix[n - j -1][i], matrix[n - i -1][n - j -1], matrix[j][n - i -1], matrix[i][j]classSolution:
def rotate(self, matrix: List[List[int]])-> None:
n =len(matrix)
# 水平翻转
for i in range(n // 2):for j in range(n):
matrix[i][j], matrix[n - i -1][j]= matrix[n - i -1][j], matrix[i][j]
# 主对角线翻转
for i in range(n):for j in range(i):
matrix[i][j], matrix[j][i]= matrix[j][i], matrix[i][j]
螺旋矩阵
classSolution:
def spiralOrder(self, matrix: List[List[int]])-> List[int]:
res =[]while matrix:
# 削头(第一层)
res += matrix.pop(0)
# 将剩下的逆时针转九十度,等待下次被削
matrix =list(zip(*matrix))[::-1]return res
对角线遍历
classSolution:
def findDiagonalOrder(self, matrix: List[List[int]])-> List[int]:ifnot matrix:return[]
m, n =len(matrix),len(matrix[0])
ans =[]
r, c =-1,1
i, j =0,0while i != m -1or j != n -1:if0<= i < m and0<= j < n:
ans.append(matrix[i][j])
i, j = i + r, j + c
else:
r, c = c, r
if j >= n: # 超出右边界
i, j = i +2, n -1
elif i <0: # 超出上边界
i =0
elif i >= m: # 超出下边界
i, j = m -1, j +2
elif j <0: # 超出左边界
j =0
ans.append(matrix[i][j])return ans
加一class Solution: def plusOne(self, digits: List[int]) -> List[int]: n = len(digits) for i in range(n-1, -1, -1): if digits[i] != 9: digits[i] += 1 for j in range(i+1, n): .