[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 }
转载于:https://www.cnblogs.com/strengthen/p/9745480.html
[Swift]LeetCode206. 反转链表 | Reverse Linked List相关推荐
- LeetCode 206. 反转链表(Reverse Linked List) 16
206. 反转链表 206. Reverse Linked List 题目描述 反转一个单链表. 每日一算法2019/5/19Day 16LeetCode206. Reverse Linked Lis ...
- 反转链表 Reverse Linked List
2018-09-11 22:58:29 一.Reverse Linked List 问题描述: 问题求解: 解法一:Iteratively,不断执行插入操作. public ListNode reve ...
- LeetCode 206. 反转链表 Reverse Linked List
5-1 链表,在节点间穿针引线 Reverse Linked List 题目: LeetCode 206. 反转链表 反转一个单链表. 示例: 输入: 1->2->3->4-> ...
- leetcode206.反转链表 解题思路(简单)
难度: 简单 题目:给你单链表的头结点head,请你反转链表,并返回反转后的链表. 示例1: 示例2: 示例3: 题目类型:数据结构链表 解题方法:双指针迭代法 解题思路: 1.申请两个新指针,分别指 ...
- LeetCode-206 反转链表
文章目录 题目描述 思路 解法一 解法二 总结 Github 题目描述 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4- ...
- leetcode206. 反转链表
再来亿遍反转链表 上码 class Solution {public:ListNode* reverseList(ListNode* head) {/**思路:我们反转指针即可1->2-> ...
- leetcode206 反转链表
反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: 你可以迭代 ...
- 翻转链表python递归_Python LeetCode-206.反转链表(难度-简单) 两个方法-迭代和递归,以及超简写法(python)...
1.题目描述 反转一个单链表. 实例 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 进阶: ...
- leetcode-206 反转链表
描述如下: 反转一个单链表. 示例: 输入: 1->2->3->4->5->NULL 输出: 5->4->3->2->1->NULL 方法一 ...
最新文章
- 测试进口原装磁屏蔽电感 10MH的漏感以及在再生高频放大检波电路中的应用
- java enum(枚举)的使用
- java:LocalDate计算两个日期之间的天数
- 【练习】2021下半年数据结构刷题笔记和总结 (三)栈 队列 链表 枚举算法
- 将数组绑定到dropdownlist上
- python做一个单项选择题系统_(完整版)python选择题word打印版
- 多串口服务器的工作方式及接线示意图介绍
- python的userlist_Python Collections.UserList用法及代码示例
- 笨办法学 Python · 续 练习 30:有限状态机
- 【转】wireshark过滤规则
- python画中国的轮廓_利用python绘制中国地图(含省界、河流等)
- 图像处理中的二阶矩矩阵(结构张量)
- OpenGL ES 2 0 (iOS)[05 1]:进入 3D 世界,从正方体开始
- 排列组合问题 “n个球放入m个盒子(8种)”
- POI导出Excel工具类(简单看完就会)
- 《程序员》7月刊推荐:社交网数据库技术分析
- 十本Android开发学习书籍下载链接
- GIS是什么?『总览篇』
- 数字证书连接服务器异常,连接时Socket.io + SSL +自签名CA证书出现错误
- 数据中心机房基础建设,等级、机柜、机架设定等相关内容都在这里!
热门文章
- LeetCode 295. 数据流的中位数 Hard难度
- OpenCV计算机视觉编程之三种图像像素的遍历方法
- 一文读懂P Quant与 Q Quant ,量化交易与金融工程
- 南信大计算机分类,南信大计算机原理样卷
- java 新浪天气预报接口_根据新浪天气API获取各地天气状况(Java实现)
- matlab 时间序列 周期,求助:在MATLAB里如何输入时间序列中的时间
- 马走日poj java超时_简单搜索poj 2243(水
- oracle和mysql文件怎么打开_Oracle vs Mysql--架构、sql查询执行流程及SQL解析顺序区别说明-sql文件怎么打开...
- 025_html表格
- bat循环执行带参数_dos命令exit图文教程,结束退出CMD.EXE程序或当前bat批处理脚本...