函数在运行时调用自己,这个函数就叫递归函数,调用的过程叫做递归。
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
class Solution:
def mergeTwoLists(self, list1: Optional[ListNode], list2: Optional[ListNode]) -> Optional[ListNode]:
#判断特殊情况
if not list1:
return list2
elif not list2:
return list1
elif list1.val <= list2.val:
list1.next = self.mergeTwoLists(list1.next,list2)
return list1
else:
list2.next = self.mergeTwoLists(list1,list2.next)
return list2
递归两个条件:
(1)何时终止:当list1和list2有一个是空就要跳出
(2)每一层的操作:比较list1和list2的头节点,谁小就将它的链接指向剩余的合并结果。最后返回该链接。
class Solution:
def lengthOfLastWord(self, s: str) -> int:
que = []
i = len(s) - 1
while i >= 0:
if s[i] != ' ':
que.append(s[i])
i -= 1
else:
if len(que) > 0:
return len(que)
else:
i -= 1
return len(que)
class Solution:
def plusOne(self, digits: List[int]) -> List[int]:
number = 0
for i in range(len(digits)): #转化成数字
number = number + digits[i] * pow(10 , (len(digits)-1 - i))
number = number + 1
output = []
while number > 0:
output.insert(0, number % 10)#倒叙插入
number = number // 10 #降位
return output
class Solution:
def addBinary(self, a: str, b: str) -> str:
a = int(a,2)#base默认是10,不传base可以穿整数,小数,字符串等。如果是带参数base的话,a要以字符串的形式进行输入,然后base是该字符串的进制
b = int(b,2)
return bin(a+b)[2:] #bin()返回的是字符串,并且以'0b'打头