写点什么

LeetCode 题解:206. 反转链表,双指针,JavaScript,详细注释

用户头像
Lee Chen
关注
发布于: 2020 年 09 月 15 日
LeetCode题解:206. 反转链表,双指针,JavaScript,详细注释

原题链接:https://leetcode-cn.com/problems/reverse-linked-list/


解题思路:


参考了【反转链表】:双指针,递归,妖魔化的双指针中的“好理解的双指针”部分。


  1. 定义两个指针,current 指向链表头结点,prev 为 null。

  2. 两个指针一起向前移动,每次移动都将 current 指向 prev,完成反转。

  3. 当 current 移出链表时,prev 刚好在链表的尾节点,此时 prev 为反转后的新链表的头节点,可以直接返回。


/**
* @param {ListNode} head
* @return {ListNode}
*/
var reverseList = function(head) {
// 定义双指针
let prev = null;
let current = head;
// 两个指针一起向前移动,每次移动都将前一个指针指向后一个。
// 遍历完成链表时,第一个指针为null,退出循环。
// 当遇到链表为空或者链表只有一个节点时,会退出循环,因此不需要判断、
while (current) {
let temp = current.next;
current.next = prev;
prev = current;
current = temp;
}
// 退出循环时,prev指针指向原链表的尾节点,新链表的头节点
return prev;
};
复制代码


发布于: 2020 年 09 月 15 日阅读数: 53
用户头像

Lee Chen

关注

还未添加个人签名 2018.08.29 加入

还未添加个人简介

评论

发布
暂无评论
LeetCode题解:206. 反转链表,双指针,JavaScript,详细注释