算法(TS):合并二维有序数组成一维有序数组

合并二维有序数组成一维有序数组的核心是合并有序的一维数组,声明变量 answer 为最终的合并结果,其初始值为 arr0

第一步将 arr1 合并到 answer, 第二步将 arr2 合并到 answer,回到 arr 中的所有一维数组合并到 answer。

ts 复制代码
function mergeArr(arr: number[][]):number[] {
    if(arr.length === 0) return[]
    const answer: number[] = [...arr[0]]
    const len = arr.length
    let index = 1
    // 合并两个有序一维数组
    const merge = (origin: number[],target:number[]) => {
        let i = origin.length - 1,j = target.length - 1
        target.push(...new Array(origin.length))
        let targetIndex = target.length - 1,cur
        while(i >= 0 || j >= 0) {
            let cur: number = origin[i]
            if(i < 0) {
                cur = target[j]
                j--
            } else if(j < 0) {
                cur = origin[i]
                i--
            } else if(origin[i] >= target[j]) {
                cur = origin[i]
                i--
            } else if(origin[i] < target[j]) {
                cur = target[j]
                j--
            }

            target[targetIndex] = cur
            targetIndex--
        }
    }

    while(index < len) {
        merge(arr[index],answer)
        index++
    }

    return answer
}
相关推荐
ZengLiangYi1 分钟前
如何解析 5 种完全不同格式的 AI 对话
javascript·人工智能·算法
计算机安禾6 分钟前
【算法设计与分析】第29篇:启发式与元启发式搜索方法综述
java·数据库·算法
我叫袁小陌8 分钟前
数据结构详解与算法关联指南
算法
sleven fung8 分钟前
llama-cpp-python 本地部署入门
开发语言·python·算法·llama
头歌实践平台9 分钟前
C++面向对象 - 运算符重载的应用
开发语言·c++·算法
晚风予卿云月18 分钟前
《二分答案》算法练习
数据结构·c++·算法·二分·竞赛·算法随笔
普马萨特26 分钟前
搜索核心算法:从召回到排序
算法·搜索引擎
sheeta199826 分钟前
LeetCode 每日一题笔记 日期:2026.05.31 题目:2126. 摧毁小行星
笔记·算法·leetcode
INGNIGHT37 分钟前
984.不含 AAA 或 BBB 的字符串(贪心)
开发语言·算法·leetcode
飞天狗11140 分钟前
2025第十六届蓝桥杯c/c++B组国赛题解
c语言·c++·算法·蓝桥杯