将列表转换为 ListNode
Converting a List into ListNode
我正在回答 LeetCode 上的一个问题,我很难理解如何在 Python 中编写 LinkedList(或 ListNode)。我了解 LinkedList 的概念,但我仍然无法理解如何将整数列表转换为相同的 LinkedList!
我已经尝试在网上阅读有关此内容的一些信息,我看到有一些可用的递归选项,但递归是 v.v.costly,我不是它的忠实拥护者。下面是 LeetCode 对 LinkedList 的实现以及我将列表转换为 LinkedList 的方法
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
list1 = [4,5,1,2,0,4]
head = ListNode(list1[0])
e = 1
while e < len(list1):
print(head)
head.next = ListNode(list1[e])
head = head.next
e+=1
return head
问题是您缺少对列表头部的引用,因为您正在覆盖它。从这个开始:
list1 = [4,5,1,2,0,4]
head = ListNode(list1[0])
tail = head
那么tail
将是对链表最后一个元素的引用。现在在你的循环中你做:
while e < len(list1):
print(head)
tail.next = ListNode(list1[e])
tail = tail.next
e+=1
所以你像以前一样向列表中添加一个元素,但现在我们正在修改 tail
变量。最后:
return head
您现在将返回列表的头节点。
我正在回答 LeetCode 上的一个问题,我很难理解如何在 Python 中编写 LinkedList(或 ListNode)。我了解 LinkedList 的概念,但我仍然无法理解如何将整数列表转换为相同的 LinkedList!
我已经尝试在网上阅读有关此内容的一些信息,我看到有一些可用的递归选项,但递归是 v.v.costly,我不是它的忠实拥护者。下面是 LeetCode 对 LinkedList 的实现以及我将列表转换为 LinkedList 的方法
# Definition for singly-linked list.
# class ListNode(object):
# def __init__(self, x):
# self.val = x
# self.next = None
list1 = [4,5,1,2,0,4]
head = ListNode(list1[0])
e = 1
while e < len(list1):
print(head)
head.next = ListNode(list1[e])
head = head.next
e+=1
return head
问题是您缺少对列表头部的引用,因为您正在覆盖它。从这个开始:
list1 = [4,5,1,2,0,4]
head = ListNode(list1[0])
tail = head
那么tail
将是对链表最后一个元素的引用。现在在你的循环中你做:
while e < len(list1):
print(head)
tail.next = ListNode(list1[e])
tail = tail.next
e+=1
所以你像以前一样向列表中添加一个元素,但现在我们正在修改 tail
变量。最后:
return head
您现在将返回列表的头节点。