• [Swift]LeetCode206. 反转链表 | Reverse Linked List


    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
    ➤微信公众号:山青咏芝(shanqingyongzhi)
    ➤博客园地址:山青咏芝(https://www.cnblogs.com/strengthen/
    ➤GitHub地址:https://github.com/strengthen/LeetCode
    ➤原文地址:https://www.cnblogs.com/strengthen/p/9745480.html 
    ➤如果链接不是山青咏芝的博客园地址,则可能是爬取作者的文章。
    ➤原文已修改更新!强烈建议点击原文地址阅读!支持作者!支持原创!
    ★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★

    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 }
  • 相关阅读:
    全栈项目搭建 ------- express
    全栈项目搭建 ------- mysql
    全栈项目搭建 ------- pm2
    基于mysql+node+vue-ssr+webpack全栈项目搭建
    前端技能2020
    项目线上地址汇总2020
    实现一个脚手架
    下载漏洞
    java学习笔记(13-接口、final、多态)
    java学习笔记(12-继承、抽象类)
  • 原文地址:https://www.cnblogs.com/strengthen/p/9745480.html
Copyright © 2020-2023  润新知