算法(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
}
相关推荐
午安~婉3 分钟前
构图跟拍相关
前端·javascript·拍照·虚拟列表
一只小小的芙厨7 分钟前
寒假集训·子集枚举2
c++·笔记·算法·动态规划
Y.O.U..9 分钟前
力扣刷题-61.旋转链表
算法·leetcode·链表
这波不该贪内存的12 分钟前
【无标题】
算法·排序算法
前端程序猿i14 分钟前
流式输出场景下的「双区域渲染」:让第三方 DOM 操作在 Vue 响应式更新中存活
前端·javascript·vue.js
靠沿16 分钟前
【优选算法】专题二——滑动窗口
java·数据结构·算法
SoulruiA16 分钟前
LeetCode-394. 字符串解码 递归思路
算法·leetcode·职场和发展
css趣多多18 分钟前
setup() 函数与语法糖
前端·javascript·vue.js
.小墨迹19 分钟前
局部规划中的TEB,DWA,EGOplanner等算法在自动驾驶中应用?
开发语言·c++·人工智能·学习·算法·机器学习·自动驾驶
AI科技星22 分钟前
张祥前统一场论 22 个核心公式及常数
服务器·人工智能·线性代数·算法·矩阵·概率论