“ 又到了和大家分享算法的时间了,今天涉及到的话题是和链表有关系的,如果不了解链表的同学可以去看看我之前的文章,今日分享的算法题是leetcode206反转链表。”
反转链表题目如下所示,其实就是将输入的链表进行一个反转,这也是算法中常考的一道题,小伙伴此时你想想如果你面试拿到这道题该如何思考和解决呢?
反转链表题目描述图
在这里我说一下自己的解题思路,当然如果你有更好的思路欢迎在下方留言,让我们也见识一下更好的方法。老规矩,先看看下方画的图,然后再配合解析来进行分析:
解析步骤图
解析思路步骤图
关于交换的过程,其实可以联想到之前在大学才开始学习编程时的一个题目,交换a和b两个数的位置并打印,其实思路就是定义一个临时的变量temp先存储a,然后再将b的值赋值给a,最后把temp的值赋值给b即可,而在这道题中链表的交换也是同样的思想。
1 | let a = 1, b = 2, temp; |
如果你对此还有疑问的话,欢迎在下方留言,我会在看到后给你进行一个解答。
在了解了上面的思路之后,你看看能不能先尝试自己编写,如果还有问题的话,再来看看下面的代码。如果真的理解了的话,会发现实现起来也不是自己想象中的那么难,代码也就那几行。具体代码如下所示:
1 | /** |
如果你觉得对你有帮助的话,不妨来个三连再走。