📌  相关文章
📜  将一个数字添加到以链表形式表示的数字中|套装2(1)

📅  最后修改于: 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),因为递归的深度是链表的长度。

总的来说,这两种方法各有优缺点,根据实际情况选择即可。