剑指Offer24.反转链表 | 刷题打卡

82 阅读1分钟

题目描述

leetcode链接:leetcode-cn.com/problems/fa…

定义一个函数,输入一个链表的头节点,反转该链表并输出反转后链表的头节点。

示例:

输入: 1->2->3->4->5->NULL
输出: 5->4->3->2->1->NULL

限制: 0 <= 节点个数 <= 5000

思路描述

使用了迭代的方法。 举个例子,将 1 -> 2 -> 3 -> 4 -> 5 -> NULL 转换成 NULL <- 1 <- 2 <- 3 <- 4 <- 5
先把 1.next 存储到 next 变量上,然后让 1.next = prev , 接着将当前操作数赋给 prev ,将存储的 next 赋给下一个要操作的数,依次类推,知道当前操作数为 null 结束。

AC代码

/**
 * Definition for singly-linked list.
 * function ListNode(val) {
 *     this.val = val;
 *     this.next = null;
 * }
 */
/**
 * @param {ListNode} head
 * @return {ListNode}
 */
var reverseList = function(head) {
    let cur = head;
    let prev = null;
    while(cur) {
        let next = cur.next;
        cur.next = prev;
        prev = cur;
        cur = next;
    }
    return prev;
};

本文正在参与「掘金 2021 春招闯关活动」, 点击查看 活动详情