算法(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
}
相关推荐
reembarkation14 分钟前
使用pdfjs-dist 预览pdf,并添加文本层的实现
前端·javascript·pdf
reembarkation17 分钟前
vue-pdf 实现blob数据的预览
javascript·vue.js·pdf
李明卫杭州29 分钟前
JavaScript中的dispatchEvent方法详解
javascript
纪元A梦30 分钟前
贪心算法应用:K-Means++初始化详解
算法·贪心算法·kmeans
给月亮点灯|38 分钟前
Vue3基础知识-setup()、ref()和reactive()
前端·javascript·vue.js
芜青39 分钟前
【Vue2手录12】单文件组件SFC
前端·javascript·vue.js
冷冷的菜哥40 分钟前
react实现无缝轮播组件
前端·react.js·typescript·前端框架·无缝轮播
_不会dp不改名_44 分钟前
leetcode_21 合并两个有序链表
算法·leetcode·链表
mark-puls1 小时前
C语言打印爱心
c语言·开发语言·算法
Python技术极客1 小时前
将 Python 应用打包成 exe 软件,仅需一行代码搞定!
算法