★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
➤微信公众号:山青咏芝(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 }

转载于:https://www.cnblogs.com/strengthen/p/9745480.html

[Swift]LeetCode206. 反转链表 | Reverse Linked List相关推荐

  1. LeetCode 206. 反转链表(Reverse Linked List) 16

    206. 反转链表 206. Reverse Linked List 题目描述 反转一个单链表. 每日一算法2019/5/19Day 16LeetCode206. Reverse Linked Lis ...

  2. 反转链表 Reverse Linked List

    2018-09-11 22:58:29 一.Reverse Linked List 问题描述: 问题求解: 解法一:Iteratively,不断执行插入操作. public ListNode reve ...

  3. LeetCode 206. 反转链表 Reverse Linked List

    5-1 链表,在节点间穿针引线 Reverse Linked List 题目: LeetCode 206. 反转链表 反转一个单链表. 示例: 输入: 1->2->3->4-> ...

  4. leetcode206.反转链表 解题思路(简单)

    难度: 简单 题目:给你单链表的头结点head,请你反转链表,并返回反转后的链表. 示例1: 示例2: 示例3: 题目类型:数据结构链表 解题方法:双指针迭代法 解题思路: 1.申请两个新指针,分别指 ...

  5. LeetCode-206 反转链表

    文章目录 题目描述 思路 解法一 解法二 总结 Github 题目描述 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4- ...

  6. leetcode206. 反转链表

    再来亿遍反转链表 上码 class Solution {public:ListNode* reverseList(ListNode* head) {/**思路:我们反转指针即可1->2-> ...

  7. leetcode206 反转链表

    反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代 ...

  8. 翻转链表python递归_Python LeetCode-206.反转链表(难度-简单) 两个方法-迭代和递归,以及超简写法(python)...

    1.题目描述 反转一个单链表. 实例 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: ...

  9. leetcode-206 反转链表

    描述如下: 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 方法一 ...

最新文章

  1. 测试进口原装磁屏蔽电感 10MH的漏感以及在再生高频放大检波电路中的应用
  2. java enum(枚举)的使用
  3. java:LocalDate计算两个日期之间的天数
  4. 【练习】2021下半年数据结构刷题笔记和总结 (三)栈 队列 链表 枚举算法
  5. 将数组绑定到dropdownlist上
  6. python做一个单项选择题系统_(完整版)python选择题word打印版
  7. 多串口服务器的工作方式及接线示意图介绍
  8. python的userlist_Python Collections.UserList用法及代码示例
  9. 笨办法学 Python · 续 练习 30:有限状态机
  10. 【转】wireshark过滤规则
  11. python画中国的轮廓_利用python绘制中国地图(含省界、河流等)
  12. 图像处理中的二阶矩矩阵(结构张量)
  13. OpenGL ES 2 0 (iOS)[05 1]:进入 3D 世界,从正方体开始
  14. 排列组合问题 “n个球放入m个盒子(8种)”
  15. POI导出Excel工具类(简单看完就会)
  16. 《程序员》7月刊推荐:社交网数据库技术分析
  17. 十本Android开发学习书籍下载链接
  18. GIS是什么?『总览篇』
  19. 数字证书连接服务器异常,连接时Socket.io + SSL +自签名CA证书出现错误
  20. 数据中心机房基础建设,等级、机柜、机架设定等相关内容都在这里!

热门文章

  1. LeetCode 295. 数据流的中位数 Hard难度
  2. OpenCV计算机视觉编程之三种图像像素的遍历方法
  3. 一文读懂P Quant与 Q Quant ,量化交易与金融工程
  4. 南信大计算机分类,南信大计算机原理样卷
  5. java 新浪天气预报接口_根据新浪天气API获取各地天气状况(Java实现)
  6. matlab 时间序列 周期,求助:在MATLAB里如何输入时间序列中的时间
  7. 马走日poj java超时_简单搜索poj 2243(水
  8. oracle和mysql文件怎么打开_Oracle vs Mysql--架构、sql查询执行流程及SQL解析顺序区别说明-sql文件怎么打开...
  9. 025_html表格
  10. bat循环执行带参数_dos命令exit图文教程,结束退出CMD.EXE程序或当前bat批处理脚本...