目录
递归;迭代
递归
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
if l1 is None:
return l2
if l2 is None:
return l1
if l1.val < l2.val:
l1.next = self.mergeTwoLists(l1.next, l2)
return l1
else:
l2.next = self.mergeTwoLists(l2.next, l1)
return l2
迭代
class Solution:
def mergeTwoLists(self, l1: ListNode, l2: ListNode) -> ListNode:
prevhead = ListNode(-1)
prev = prevhead
while l1 and l2:
if l1.val <= l2.val:
prev.next = l1
l1 = l1.next
else:
prev.next = l2
l2 = l2.next
prev = prev.next
prev.next = l1 if l2 is None else l2
return prevhead.next
链表实现
1.创建‘结点’类
# coding=utf-8
class Node():
def __init__(self, elem):
self.elem = elem #节点内容
self.next = None #节点指向
2.创建‘单链表’类
# coding=utf-8
class SingleLinkList():
def __init__(self, Node = None):
self._head = None #“单链表共同属性,头结点“
def add(self, item):
node = Node(item)
node.next = self._head #将这个新node指向原链表头结点
self._head = node #将node赋值给头结点
def append(self, item):
node = Node(item)
if self.is_empty():
self.add(item)
else:
cur = self._head
while cur.next != None:
cur = cur.next
cur.next = node
def is_empty(self):
return self._head == None
def insert(self,pose,item):
if pose <= 0:
add(item)
elif pose >= self.length()-1:
self.append(item)
else:
node = Node(item)
cnt = 1
cur = self._head
pre = None
while cur != pose:
pre = cur
cur = cur.next
cnt += 1
cur = node #将指定位置内容变成node
cur.next = pre.next #将前一结点储存的地址给node
pre.next = cur #再将前一结点指向node
def length(self):
cur = self._head
cnt = 0
while cur != None:
cnt += 1
cur = cur.next
return cnt
def remove(self, item):
if self.is_empty():
print("List is empty!")
else:
cur = self._head
pre = None
while cur.elem != item:
pre = cur
cur = cur.next
pre.next = cur.next #将要删结点存储的地址给前一结点
print("Deleted Succcessfully!")
del cur #再将结点删除
def travel(self):
cur = self._head
while cur!= None:
print(cur.elem, end=' ')
cur = cur.next
def search(self,item):
cur = self._head
while cur.elem != item:
cur = cur.next
print("Search Succeeded!")
if True:
l = SingleLinkList() #创建一个实例
print(l.is_empty())
print(l.length())
l.append(1)
print(l.is_empty())
print(l.length())
l.add(0)
l.append(2)
l.append(3)
l.append(4)
l.append(5)
l.append(6)
l.insert(255,100)
l.travel()