算法(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
}
相关推荐
csdn飘逸飘逸2 分钟前
Autojs基础-device(设备)
javascript
csdn飘逸飘逸3 分钟前
Autojs基础-文件系统(files)
javascript
wuhen_n5 分钟前
patch算法:新旧节点的比对与更新
前端·javascript·vue.js
十里八乡有名的后俊生7 分钟前
深度解析:JavaScript中的import方式 - 静态导入、动态导入与CSS处理机制
前端·javascript·面试
用户60648767188968 分钟前
Claude Sonnet 4.6 实战测评:代码生成、推理能力、长文本处理全面拆解
javascript
wuhen_n10 分钟前
Diff算法基础:同层比较与key的作用
前端·javascript·vue.js
随逸17713 分钟前
《从零搭建NestJS项目》
数据库·typescript
颜酱15 分钟前
队列练习系列:从基础到进阶的完整实现
javascript·后端·算法
用户57573033462421 分钟前
两数之和:从 JSON 对象到 Map,大厂面试官到底在考察什么?
算法
程序猿追26 分钟前
“马”上行动:手把手教你基于灵珠平台打造春节“全能数字管家”
算法