Skip to content

206. 反转链表 #25

Description

@devinxiang

描述

image
解题:

/** 
 * @param {ListNode} head
 * @return {ListNode}
 * 反转链表,用一个变量存放下一个 node
 * 所有的链表题考查的不是思维能力,思考都很简单,而是实现能力;
 * 思路:
 * 1. 每次对当前节点进行反转:
 *  - 从第一个prev节点null开始;
 *  - 开始反转第一个节点,用一个变量next存储下一个节点,然后反转 cur.next = prev, 把 prev 赋值为 cur,对于下一次他已经是 prev 了,然后把 cur 移动到下一个节点继续开始比较
 * 总结核心:每次比较存储好一个节点后进行反转且向后进行推进
 */
var reverseList = function(head) {
  // 增加边缘优化
  if(!head || !head.next){
    return head
  }

  let prev = null;
  let cur = head;
  while(cur) {
    // 保存下一个节点
    let next = cur.next;
    // 替换当前节点的下一个节点
    cur.next = prev;
    // 赋值给 prev 
    prev = cur;
    // cur 移动到下一个节点
    cur = next;
  }

  return prev;
};

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions