16、字符串相乘
class Solution:
def multiply(self, num1, num2):
num1 = num1[::-1]
num2 = num2[::-1]
length1 = len(num1)
length2 = len(num2)
temp = [0 for __ in range(length1 + length2)]
for i in range(len(num1)):
for j in range(len(num2)):
temp[i+j] += int(num1[i]) * int(num2[j])
print temp
list_ = []
for i in range(len(temp)):
digit = temp[i] % 10
carry = temp[i] / 10
if i < len(temp)-1:
temp[i+1] += carry
list_.insert(0, str(digit))
while list_[0] == '0' and len(list_) > 1:
list_.pop(0)
return ''.join(list_)
20、螺旋矩阵
class Solution:
def spiralOrder(self, matrix):
res=[]
m=len(matrix)
if m==0:
return res
else:
n=len(matrix[0])
if n==0:
return res
count=(m+1)//2
k=0
su=m*n
cc=0
while k<count and cc<su:
for i in range(k,n-k):
res.append(matrix[k][i])
cc+=1
for i in range(k+1,m-1-k):
res.append(matrix[i][n-1-k])
cc+=1
if k!=m-1-k:
for i in range(k,n-k):
res.append(matrix[m-1-k][n-1-i])
cc+=1
if k!=n-1-k:
for i in range(k+1,m-1-k):
res.append(matrix[m-1-i][k])
cc+=1
k+=1
return res
21、旋转链表
class Solution:
def rotateRight(self, head: ListNode, k: int) -> ListNode:
if not head:
return None
length = 0
index = head
while index.next:
index = index.next
length += 1
index.next = head
length = length + 1
k = k % length
for i in range(length - k):
head = head.next
index = index.next
index.next = None
return head
这篇博客探讨了字符串相乘的算法实现,通过翻转字符串并逐位相加,然后处理进位,得到乘积。同时,介绍了螺旋矩阵的遍历方法,按照螺旋顺序填充矩阵元素。此外,还讲解了如何实现链表的旋转,通过计算链表长度和旋转次数,高效地调整链表结构。
483

被折叠的 条评论
为什么被折叠?



