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互相学习,互相指教