算法(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
}
相关推荐
小当家.10515 小时前
[LeetCode]Hot100系列.贪心总结+思想总结
算法·leetcode·职场和发展
前端开发爱好者15 小时前
前端新玩具:Vike 发布!
前端·javascript
今天也是爱大大的一天吖15 小时前
vue2中的.native修饰符和$listeners组件属性
前端·javascript·vue.js
fxshy15 小时前
在 Vue 3 + Vite 项目中使用 Less 实现自适应布局:VW 和 VH 的应用
前端·javascript·less
奇舞精选15 小时前
AI时代的前端知识拾遗:前端事件循环机制详解(基于 WHATWG 最新规范)
前端·javascript
墨雪不会编程16 小时前
数据结构—排序算法篇二
数据结构·算法·排序算法
AI3D_WebEngineer16 小时前
企业级业务平台项目设计、架构、业务全解之组件库篇
前端·javascript·vue
ShineWinsu16 小时前
对于数据结构:堆的超详细保姆级解析—上
数据结构·c++·算法·计算机·二叉树·顺序表·
im_AMBER16 小时前
Leetcode 46
c语言·c++·笔记·学习·算法·leetcode
浪裡遊17 小时前
Next.js路由系统
开发语言·前端·javascript·react.js·node.js·js