206. Reverse Linked List

Leetcode link

题目简介

/**
 * @param {ListNode} head
 * @return {ListNode}
 */

题目给我们一个链表头 head

要求我们翻转链表的元素并返回新的头指针

解题思路

我们只需要把链表所有元素的 next 指针指向前一个元素,就可以翻转整个链表

为了修改链表指针,我们需要三个变量: left 指向要修改的元素的前一个元素、mid 指向要修改的当前元素、right 指向要修改的下一个元素

在每次循环中,我们修改 mid.next,然后把 mid 赋值给 leftright 赋值给 mid ,直到 mid 指向 null

最后我们还需要修改一下 head 的 next 指向,将其指向 null

Javascript

/**
 * Definition for singly-linked list.
 * function ListNode(val, next) {
 *     this.val = (val===undefined ? 0 : val)
 *     this.next = (next===undefined ? null : next)
 * }
 */
/**
 * @param {ListNode} head
 * @return {ListNode}
 */
var reverseList = function(head) {
    if(!head) {
        return null
    }
    let left = head
    let mid = head.next

    while(mid) {
        let right = mid.next
        mid.next = left
        left = mid
        mid = right
    }
    head.next = null
    return left
};

results matching ""

    No results matching ""