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

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

第一步将 arr[1] 合并到 answer, 第二步将 arr[2] 合并到 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
}
相关推荐
WL_Aurora3 分钟前
Python 算法基础篇之元组与列表
python·算法
Brilliantwxx5 分钟前
【算法题】递归树+哈希表+分治异或+双指针
开发语言·c++·笔记·算法
yugi9878385 分钟前
经典三维表面重建算法(C语言实现)
c语言·开发语言·算法
无限进步_8 分钟前
【C++】智能指针族谱:auto_ptr、unique_ptr、shared_ptr
java·开发语言·数据结构·c++·算法
Brilliantwxx9 分钟前
【C++】Stack和Queue(初认识和算法题OJ)
开发语言·c++·笔记·算法
fffzd12 分钟前
C++入门(二)
开发语言·c++·算法·函数重载·引用·inline内联函数·nullptr
傻瓜搬砖人13 分钟前
c语言绿皮书第三版第十章习题
c语言·开发语言·算法
Lazionr17 分钟前
数据结构堆详解:原理、实现与应用
数据结构·算法
故事和你9121 分钟前
蓝桥杯-2026年C++B组省赛
开发语言·数据结构·c++·算法·蓝桥杯·动态规划·图论
哆啦A梦158823 分钟前
11,Springboot3+vue3个人中心,修改密码
java·前端·javascript·数据库·vue3