Skip to content

Latest commit

 

History

History
85 lines (72 loc) · 1.59 KB

206.reverse-linked-list.md

File metadata and controls

85 lines (72 loc) · 1.59 KB

题目地址

https://leetcode.com/problems/reverse-linked-list/description/

题目描述

Reverse a singly linked list.

Example:

Input: 1->2->3->4->5->NULL Output: 5->4->3->2->1->NULL Follow up:

A linked list can be reversed either iteratively or recursively. Could you implement both?

思路

这个就是常规操作了,使用一个变量记录前驱pre,一个变量记录后继next.

不断更新current.next = pre 就好了

关键点解析

  • 链表的基本操作(交换)
  • 虚拟节点dummy 简化操作
  • 注意更新current和pre的位置, 否则有可能出现溢出

代码

/*
 * @lc app=leetcode id=206 lang=javascript
 *
 * [206] Reverse Linked List
 *
 * https://leetcode.com/problems/reverse-linked-list/description/
 *
 * algorithms
 * Easy (52.95%)
 * Total Accepted:    532.6K
 * Total Submissions: 1M
 * Testcase Example:  '[1,2,3,4,5]'
 *
 * Reverse a singly linked list.
 * 
 * Example:
 * 
 * 
 * Input: 1->2->3->4->5->NULL
 * Output: 5->4->3->2->1->NULL
 * 
 * 
 * Follow up:
 * 
 * A linked list can be reversed either iteratively or recursively. Could you
 * implement both?
 * 
 */
/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} head
 * @return {ListNode}
 */
var reverseList = function(head) {
    const dummyHead = {
        next: head
    }
    let current = dummyHead.next;
    let pre = null;

    while(current) {
        const next = current.next;
        current.next = pre;
        pre = current;
        current = next;
    }
    return pre;
};