在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ Reverse a singly linked list. Example: Input: 1->2->3->4->5->NULL Output: 5->4->3->2->1->NULL Follow up: A linked list can be reversed either iteratively or recursively. Could you implement both? 反转一个单链表。 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 20ms 1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * public var val: Int 5 * public var next: ListNode? 6 * public init(_ val: Int) { 7 * self.val = val 8 * self.next = nil 9 * } 10 * } 11 */ 12 class Solution { 13 func reverseList(_ head: ListNode?) -> ListNode? { 14 if head == nil || head?.next == nil 15 { 16 return head 17 } 18 var h = reverseList(head?.next) 19 head?.next?.next = head 20 head?.next = nil 21 return h 22 } 23 } 20ms 1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * public var val: Int 5 * public var next: ListNode? 6 * public init(_ val: Int) { 7 * self.val = val 8 * self.next = nil 9 * } 10 * } 11 */ 12 class Solution { 13 func reverseList(_ head: ListNode?) -> ListNode? { 14 if head == nil { 15 return nil 16 } 17 18 var pre : ListNode? 19 var next : ListNode? 20 var cur : ListNode? = head 21 22 while (cur != nil) { 23 next = cur?.next; 24 cur?.next = pre; 25 pre = cur; 26 cur = next; 27 } 28 29 return pre; 30 } 31 } 20ms 1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * public var val: Int 5 * public var next: ListNode? 6 * public init(_ val: Int) { 7 * self.val = val 8 * self.next = nil 9 * } 10 * } 11 */ 12 class Solution { 13 func reverseList(_ head: ListNode?) -> ListNode? { 14 if head == nil { 15 return head 16 } 17 18 if head?.next == nil { 19 return head 20 } 21 22 guard let r = reverseList(head?.next) else { return nil } 23 if r.next == nil { 24 r.next = head 25 } else { 26 head!.next!.next = head 27 } 28 head!.next = nil 29 return r 30 } 31 } 24ms 1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * public var val: Int 5 * public var next: ListNode? 6 * public init(_ val: Int) { 7 * self.val = val 8 * self.next = nil 9 * } 10 * } 11 */ 12 class Solution { 13 func reverseList(_ head: ListNode?) -> ListNode? { 14 if head == nil || head?.next == nil { 15 return head 16 } 17 18 guard let r = reverseList(head?.next) else { return nil } 19 if r.next == nil { 20 r.next = head 21 } else { 22 head!.next!.next = head 23 } 24 head!.next = nil 25 return r 26 } 27 } 24ms 1 /** 2 * Definition for singly-linked list. 3 * public class ListNode { 4 * public var val: Int 5 * public var next: ListNode? 6 * public init(_ val: Int) { 7 * self.val = val 8 * self.next = nil 9 * } 10 * } 11 */ 12 class Solution { 13 func reverseList(_ head: ListNode?) -> ListNode? { 14 if head == nil { 15 return nil 16 } 17 var root = head 18 19 var stack = [ListNode]() 20 while root != nil { 21 stack.append(root!) 22 root = root!.next 23 } 24 25 root = stack.last! 26 var next = root 27 for i in stride(from: stack.count - 2, to: -1, by: -1) { 28 let node = stack[i] 29 node.next = nil 30 next?.next = node 31 next = node; 32 } 33 return root 34 } 35 }
|
请发表评论