今天做了LeetCode21题,520没什么,还是和代码过。
一开始以为是列表,有这么简单?
直接l1+l2,然后排序输出?
后面测试才发现是个链表,本来没怎么了解python的列表,正好补补课。
看看怎么创建链表:
class Node:
def __init__(self,item):
self.item = item
self.next = None
#头插法
def creat_linklist_head(li):
head = Node(li[0])
for i in li[1:]:
node = Node(i)
node.next = head
head = node
return head
#尾插法
def creat_linklist_tail(li):
head = Node(li[0])
tail = Node(li[1])
head.next = tail
#也可以:tail = head
for i in li[2:]:
node = Node(i)
tail.next = node
tail = tail.next
return head
#打印链表内容
def print_linklist(lk):
print('链表内容:',end = '')
while lk:
print(lk.item,end = '')
lk = lk.next
li = [1,2,3,4,5,6]
print('原列表:',li)
lk = creat_linklist_tail(li)
print_linklist(lk)
结果如下:
然后做题
我还是很愚蠢的继续使用:l1+l2,然后排序输出的方法,只是先把链表变成列表,最后再变回链表就是了
代码如下:
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
l3 = []
l4 = []
while l1:
l3.append(l1.val)
l1 = l1.next
while l2:
l4.append(l2.val)
l2 = l2.next
l5 = l3 +l4
l5.sort()
if len(l5) > 0: #为空时数组会越界,所以判一下空
head = ListNode(l5[0])
tail = head
for i in l5[1:]:
node = ListNode(i)
tail.next = node
tail = tail.next
return head
else:
return None #注意为空时要返回None
提交后:
还是得多看看LeetCode 的题解呀,跟别人的差距还是太大了。
加油加油!!