[路飞]_算法成长之路四,反转链表

75 阅读1分钟

个人算法成长之路四!!!定期更新一些刷题过程中个人的思路以及理解。有兴趣的朋友们可以互动交流哈~

题目:

leetcode- 206. 反转链表

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

示例 1:

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

示例 3:

输入: head = []
输出: []

解题思路:

迭代法:

  • 定义两个指针: prepre 和 curcur ;prepre 在前 curcur 在后。
  • 每次让 prepre 的 nextnext 指向 curcur ,实现一次局部反转
  • 局部反转完成之后,prepre 和 curcur 同时往前移动一个位置
  • 循环上述过程,直至 prepre 到达链表尾部

9ce26a709147ad9ce6152d604efc1cc19a33dc5d467ed2aae5bc68463fdd2888.gif

var reverseList = function(head) {
    let prev = null;
    let curr = head;
    while (curr) {
        const next = curr.next;
        curr.next = prev;
        prev = curr;
        curr = next;
    }
    return prev;
};