1、加一
class Solution(object):
def plusOne(self, digits):
l = len(digits) 首先得到数组的长度
sum = 0
for i in range(l): 对数组中存储的单个数字进行转换
sum += digits[i]*pow(10,l-i-1) 如1,2,3 转换:3*10(l-i-1)
sum += 1 sum加一
s = str(sum)
list1 = list(s)
list2 = list(map(int,list1)) 将数字逐个分割存储在数组中
return list2
2、寻找数组的中心下标
class Solution(object):
def pivotIndex(self, nums):
l = len(nums)
for i in range(l):
if sum(nums[:i]) == m(nums[i+1:l]): 遍历整个列表,要是遍历要素左边的数字的和等于
return i 它右边的数字的和,则返回这个要素的数组下标
return -1
3、轮转数组
class Solution(object):
def rotate(self, nums, k):
l = len(nums)
n = k%l 若轮转长度与数组长度相等,相当于没有轮转,故k%l才是真正的的轮转个数
nums[:] = nums[l-n:]+nums[:l-n]
4、旋转图像
l = len(matrix)
t = [[0] * l for _ in range(l)]
for i in range(l):
for j in range(l):
t[i][j]=matrix[l-j-1][i]
matrix[:] = t
5、螺旋矩阵
class Solution(object):
def spiralOrder(self, matrix):
l = len(matrix)
dx = [0,1,0,-1] #控制行号,在某一行上遍历时取0,向下换行取1,向上换行取-1
dy = [1,0,-1,0] #控制列号,向右移动加一,向左移动减一
c = len(matrix[0])
r = len(matrix)
total = c*r
s = []
visited =[[0]*c for i in range(r)]
index = 0
row = 0
column = 0
for j in range(total):
s.append(matrix[row][column])
visited[row][column] = 1
nextrow = row + dx[index] #nextrow到下一行位置
nextcolumn = column + dy[index] #到下一列位置
if (nextrow<0 or nextrow >=r or nextcolumn < 0 or nextcolumn >= c or visited[nextrow][nextcolumn]==1): #判断下一位置是否超过界限,是否已被遍历
index = (index+1)%4 #当下一位置超过界限时意味着改变方向
row += dx[index]
column += dy[index]
return s