11. 反转从位置 m 到 n 的链表。

题目

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

示例 1

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

示例 2

// 输入:head = [1,2]
// 输出:[2,1]

示例 3

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

提示

  • 链表中节点的数目范围是 [0, 5000]
  • -5000 <= Node.val <= 5000

参考答案

DETAILS
// 定义链表节点类
class ListNode {
  constructor(val, next = null) {
    this.val = val;
    this.next = next;
  }
}

// 数组转换为链表
function arrayToList(arr) {
  if (arr.length === 0) return null;
  let head = new ListNode(arr[0]);
  let current = head;
  for (let i = 1; i < arr.length; i++) {
    current.next = new ListNode(arr[i]);
    current = current.next;
  }
  return head;
}

// 反转链表函数
var reverseList = function (head) {
  let prev = null;
  let curr = head;
  while (curr) {
    let next = curr.next;
    curr.next = prev;
    prev = curr;
    curr = next;
  }
  return prev;
};

// 测试
const arr = [1, 2, 3, 4, 5];
const head = arrayToList(arr);
const reversedHead = reverseList(head);

// 打印反转后的链表
let current = reversedHead;
const result = [];
while (current) {
  result.push(current.val);
  current = current.next;
}
console.log(result); // 输出 [5, 4, 3, 2, 1]
最后更新时间' 2025/3/25 07:37:15