鏈表反轉(zhuǎn),用迭代和遞歸兩種方式實(shí)現(xiàn),發(fā)現(xiàn)遞歸版快很多
迭代版
1 #206
2 #Runtime: 53 ms
3 #Memory Usage: 15.6 MB
4
5 # Definition for singly-linked list.
6 # class ListNode(object):
7 # def __init__(self, val=0, next=None):
8 # self.val = val
9 # self.next = next
10 class Solution(object):
11 def reverseList(self, head):
12 """
13 :type head: ListNode
14 :rtype: ListNode
15 """
16 p = None
17 while head != None:
18 nxt = head.next
19 head.next = p
20 p = head
21 head = nxt
22 return p
遞歸版
1 #206
2 #Runtime: 26 ms
3 #Memory Usage: 18.9 MB
4
5 # Definition for singly-linked list.
6 # class ListNode(object):
7 # def __init__(self, val=0, next=None):
8 # self.val = val
9 # self.next = next
10 class Solution(object):
11 def DFS(self, head, p):
12 if head == None:
13 return p
14 nxt = head.next
15 head.next = p
16 p = head
17 head = nxt
18 return self.DFS(head, p)
19
20 def reverseList(self, head):
21 """
22 :type head: ListNode
23 :rtype: ListNode
24 """
25 p = None
26 return self.DFS(head, p)