206. 反转链表
反转一个单链表。
示例:
输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL
进阶:
你可以迭代或递归地反转链表。你能否用两种方法解决这道题?
代码如下:耗时56ms
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def reverseList(self, head):
"""
:type head: ListNode
:rtype: ListNode
"""
cur = head
pre = None
h = head
list = []
while cur:
h = cur
temp = cur.next
cur.next = pre
pre = cur
cur = temp
list.append(h.val)
return list[::-1]
21. 合并两个有序链表
将两个有序链表合并为一个新的有序链表并返回。新链表是通过拼接给定的两个链表的所有节点组成的。
示例:
输入:1->2->4, 1->3->4 输出:1->1->2->3->4->4
代码如下:耗时60ms
# Definition for singly-linked list.
# class ListNode:
# def __init__(self, x):
# self.val = x
# self.next = None
class Solution:
def mergeTwoLists(self, l1, l2):
"""
:type l1: ListNode
:type l2: ListNode
:rtype: ListNode
"""
# list = []
# newHead = ListNode(0)
# pre = newHead
# while l1 and l2:
# if l1.val < l2.val:
# pre.next = l1
# l1 = l1.next
# list.append(pre.next.val)
# else:
# pre.next = l2
# l2 = l2.next
# list.append(pre.next.val)
# pre = pre.next
# if l1:
# pre.next = l1
# list.append(pre.next.val)
# elif l2:
# pre.next = l2
# list.append(pre.next.val)
# return list
head = ListNode(0)
first = head
while l1 != None and l2 != None:
if l1.val > l2.val:
head.next = l2
l2 = l2.next
else :
head.next = l1
l1 = l1.next
head = head.next
if l1 == None:
head.next = l2
elif l2 == None:
head.next = l1
return first.next
互相学习,互相指教