HOT100——合并K个升序链表(JS实现)

简介: HOT100——合并K个升序链表(JS实现)

题目描述

image.png

解题思路

  • 暴力法
  1. 首先遍历每一个链表元素,然后将其值存入到一个数组中。
  2. 将第一步获得的数组进行排序。
  3. 遍历第二步的数组,分别生成节点,然后存入一个临时数组。
  4. 以第三步获得的临时数组为基础,依次修改指针的指向,最后返回头指针即可。

解题代码

var mergeKLists = function(lists) {
    // 暴力法
    if (lists.length === 0) return null
    const res = [];
    for (let v of lists) {
        while (v) {
            res.push(v.val);
            v = v.next;
        }
    }
    if (res.length === 0) return null;
    res.sort((num1,num2) => num1 - num2);
    const temp = [];
    for (let v of res) {
        temp.push(new ListNode(v))
    }
    for (let i = 0; i < temp.length-1; i++) {
        temp[i].next = temp[i+1];
    }
    temp[temp.length-1].next = null;
    return temp[0]
};

启示

  • 学会使用数组来辅助链表的生成与遍历
相关文章
|
5月前
|
算法 Go
【LeetCode 热题100】23:合并 K 个升序链表(详细解析)(Go语言版)
本文详细解析了 LeetCode 热题 23——合并 K 个升序链表的两种解法:优先队列(最小堆)和分治合并。题目要求将多个已排序链表合并为一个升序链表。最小堆方法通过维护节点优先级快速选择最小值,;分治合并则采用归并思想两两合并链表。文章提供了 Go 语言实现代码,并对比分析两种方法的适用场景,帮助读者深入理解链表操作与算法设计。
161 10
|
11月前
|
算法
【❤️算法笔记❤️】-每日一刷-23、合并 K 个升序链表
【❤️算法笔记❤️】-每日一刷-23、合并 K 个升序链表
109 0
LeetCode第23题合并 K 个升序链表
这篇文章介绍了LeetCode第23题"合并K个升序链表"的解题方法,使用分而治之的思想,通过递归合并链表的方式解决了这个难题。
LeetCode第23题合并 K 个升序链表
|
存储 Python
【Leetcode刷题Python】23. 合并K个升序链表
合并K个升序链表的方法:使用数组排序的暴力求解法、使用小顶堆的高效方法,以及分而治之的策略,并提供了相应的Python实现代码。
123 1
|
存储 算法 Python
【面试题】合井K个升序链表
【面试题】合井K个升序链表
67 0
|
存储 JavaScript 前端开发
JavaScript实现单向链表
JavaScript实现单向链表
90 0
23. 合并 K 个升序链表
23. 合并 K 个升序链表
86 3
|
JavaScript
JS 【详解】双指针排序 -- 数组合并后递增排序
JS 【详解】双指针排序 -- 数组合并后递增排序
89 0
|
存储 算法 数据挖掘
Leetcode二十三题:合并K个升序链表【22/1000 python】
Leetcode二十三题:合并K个升序链表【22/1000 python】