cubegao

Swift.反转链表

2015-07-08

题目描述:1->2->3->4,4->3->2->1

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
import Foundation

class For16Solution {
func reversedListNode(_ head: ListNode?) -> ListNode? {
if head == nil || head?.next == nil {
return head
}

var pre : ListNode?
var cur = head
pre = nil

while cur != nil {
let tmp = cur?.next
cur?.next = pre
pre = cur
cur = tmp
}


head?.next = nil

return pre
}

func reversedListNode2(_ head: ListNode?) -> ListNode? {

if head == nil || head?.next == nil {
return nil
}

let newHead = reversedListNode2(head?.next)
head?.next?.next = head
head?.next = nil

return newHead
}
}

算法思想:迭代的话,使用使用头插法。

github地址:https://github.com/cubegao/LeetCode

Tags: 算法

扫描二维码,分享此文章