📅  最后修改于: 2023-12-03 15:09:33.736000             🧑  作者: Mango
在以链表形式表示数字的问题中,我们需要实现一个函数,将一个数字添加到链表中。这里我们介绍两种方法。
第一种方法是直接循环遍历链表,找到最后一个节点,将新节点添加到最后面。
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def addToList(num: int, head: ListNode) -> ListNode:
newNode = ListNode(num)
if not head:
head = newNode
return head
else:
curr = head
while curr.next:
curr = curr.next
curr.next = newNode
return head
这个方法的时间复杂度是O(n),其中n是链表的长度。空间复杂度是O(1),只需要常数级别的额外空间。
另一种方法是递归,不断将新节点插入到链表的头部。
class ListNode:
def __init__(self, val=0, next=None):
self.val = val
self.next = next
def addToList(num: int, head: ListNode) -> ListNode:
if not head:
return ListNode(num)
else:
newHead = ListNode(num, head)
return newHead
这个方法的时间复杂度也是O(n),但是空间复杂度是O(n),因为递归的深度是链表的长度。
总的来说,这两种方法各有优缺点,根据实际情况选择即可。