1.0066. 加一
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
digits.insert(0,0)
digits[len(digits)-1] += 1
for i in range(len(digits)-1 , 0,-1):
if digits[i] >9:
digits[i-1]+=1
digits[i]=0
else:
break
if digits[0]==0:
digits.pop(0)
return digits
2.0724. 寻找数组的中心下标
class Solution:
def pivotIndex(self, nums: List[int]) -> int:
for i in range(0,len(nums)):
sum_left = sum(nums[:i])
sum_right = sum(nums[i+1:])
# for l in range(0,i):
# sum_left += nums[l]
# for m in range(i+1,len(nums)):
# sum_right += nums[m]
if sum_left==sum_right:
return i
return -1
3.0189. 轮转数组
class Solution:
def rotate(self, nums: List[int], k: int) -> None:
"""
Do not return anything, modify nums in-place instead.
"""
left ,right = 0 ,len(nums)-1
k = k%len(nums)
while left<right:
nums[left] ,nums[right] = nums[right] ,nums[left]
left +=1
right -=1
left_left ,left_right ,right_left ,right_right =0 ,k-1 ,k ,len(nums)-1
while left_left<left_right:
nums[left_left] ,nums[left_right] = nums[left_right] ,nums[left_left]
left_left +=1
left_right -=1
while right_left<right_right:
nums[right_left], nums[right_right] =nums[right_right] ,nums[right_left]
right_left +=1
right_right -=1
4.0048. 旋转图像
class Solution:
def rotate(self, matrix: List[List[int]]) -> None:
"""
Do not return anything, modify matrix in-place instead.
"""
up ,down =0 ,len(matrix)-1
while up<down:
for i in range(0,len(matrix[0])):
matrix[up][i] ,matrix[down][i] = matrix[down][i] ,matrix[up][i]
up +=1
down -=1
for i in range(0,len(matrix)):
for j in range(i,len(matrix[0])):
matrix[i][j] ,matrix[j][i] =matrix[j][i] ,matrix[i][j]
5.0054. 螺旋矩阵
class Solution:
def spiralOrder(self, matrix: List[List[int]]) -> List[int]:
list = []
up ,down ,left ,right = 0 ,len(matrix)-1 ,0 ,len(matrix[0])-1
while True:
for i in range(left,right+1):
list.append(matrix[up][i])
up +=1
if up>down:
break
for i in range(up,down+1):
list.append(matrix[i][right])
right -=1
if left>right:
break
for i in range(right,left-1,-1):
list.append(matrix[down][i])
down -=1
if up>down:
break
for i in range(down,up-1,-1):
list.append(matrix[i][left])
left +=1
if left>right:
break
return list
6.0498. 对角线遍历
class Solution:
def findDiagonalOrder(self, mat: List[List[int]]) -> List[int]:
list =[]
i ,j =0 ,0
while i<len(mat) and j<len(mat[0]):
list.append(mat[i][j])
if (i+j)%2==0:
if i == 0 and j!=len(mat[0])-1:
i ,j= i ,j+1
elif j ==len(mat[0])-1:
i ,j= i+1 ,j
else:
i ,j= i-1 ,j+1
else:
if j== 0 and i!=len(mat)-1:
i ,j= i+1 ,j
elif i==len(mat)-1:
i ,j= i ,j+1
else:
i ,j= i+1, j-1
return list