[Day16]-[链表] 反转链表
作者:方勇(gopher)
- 2022 年 4 月 15 日
本文字数:556 字
阅读完需:约 2 分钟
206. 反转链表
难度简单 2445 收藏分享切换为英文接收动态反馈
给你单链表的头节点 head
,请你反转链表,并返回反转后的链表。
示例 1:
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
复制代码
示例 2:
输入:head = [1,2]
输出:[2,1]
复制代码
示例 3:
输入:head = []
输出:[]
复制代码
题解:
/**
* Definition for singly-linked list.
* type ListNode struct {
* Val int
* Next *ListNode
* }
*/
func reverseList(head *ListNode) *ListNode {
var solution func(head *ListNode) *ListNode
solution = func(head *ListNode) *ListNode {
var new *ListNode
current := head
for current != nil {
next := current.Next
current.Next, new = new, current
current = next
}
return new
}
return solution(head)
}
复制代码
func TestReverseList(t *testing.T) {
var solution func(head *ListNode) *ListNode
solution = func(head *ListNode) *ListNode {
new := &ListNode{} // 重新初始化新链表
for head != nil {
current := &ListNode{ // 新增一个节点
Val: head.Val,
Next: nil,
}
// 0->1->2
// 0->2 => 1->0
current.Next = new.Next
new.Next = current
head = head.Next
}
return new.Next
}
t.Log(solution(GetListNode()))
}
复制代码
划线
评论
复制
发布于: 刚刚阅读数: 6
方勇(gopher)
关注
Dead or Alive. 生存战斗是知识的源泉! 2018.11.08 加入
我是一名SRE哨兵,目前是好大夫基础架构部高级工程师。专注于 SRE,微服务、中间件的稳定性和可用性建设,整体负责好大夫服务治理云平台的设计和搭建!
评论