【Golang 刷题之路】转世重修第二百零六题:反转链表

【Golang 刷题之路】转世重修第二百零六题:反转链表

Golang轻松学习


一、两数相加?

给你单链表的头节点 head ,请你反转链表,并返回反转后的链表。

示例 1:
输入:head = [1,2,3,4,5]
输出:[5,4,3,2,1]
示例 2:
输入:head = [1,2]
输出:[2,1]
示例 3:
输入:head = []
输出:[]

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-linked-list
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
 

二、详细代码

1.理清题目思路

  1. 要求是什么?我们需要将链表反转
    链表:通过指针互相连接
  2. 条件是什么?链表需依照顺序进行头尾互换
  3. 优化是什么?依托于另一个链表不断将节点存入

2.代码思路,带注释

代码如下(示例):

func reverseList(head *ListNode) *ListNode {

	// 声明另一个链表 m 
   var m *ListNode

	// 当链表为空或只有一个数字时,反转即为本身
   if head == nil || head.Next == nil {
    return head
   }
   

    for {
    	// 中间变量 a 先存下 head 的位置
        a := head
        // head 转移至下一个节点,也就是从原链表中删除head
        // 将中间变量指向另一个链表 m ,此时中间变量已存入一个节点作为 尾部
        head,a.Next = head.Next,m
        // 将 m 此时再指向 a , a 此时本身位置为原 head 的位置
        // 且下一个节点为原 m 那么此时也就是 m 在头部添加上了原head 作为头部
        m = a
        // 取完一个节点后,若此时链表为空,则证明我们已反转完毕
        if head == nil {
            return m
        }
    }

}

结果

在这里插入图片描述


总结

反转链表是极其热门的考题,通过题目可以了解考生对链表的熟悉程度。通过查看热度也能发现该题热度很高,即使在第二百多题,
通过次数1,013,818提交次数1,390,692,依然很多。
希望看到博文的你能够燃起斗志,成为一个很认真的人就在今天就在现在,学习之路启程,不畏险阻。

希望这个博客能对你有所益处。我是轻王,我为自己代言。
  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

猫轻王

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值