算法(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
}
相关推荐
码农阿豪2 分钟前
Vue+Ant Design表格组件开发实战:从问题到优化的完整指南
前端·javascript·vue.js
Jordannnnnnnn3 分钟前
复试打卡day30
算法
郝学胜-神的一滴4 分钟前
贪心策略实战Leetcode 860题:柠檬水找零问题的优雅解法
数据结构·c++·算法·leetcode·职场和发展
百锦再6 分钟前
Vue不是万能的:前后端不分离开发的优势
前端·javascript·vue.js·前端框架·vue
小资同学6 分钟前
考研机试贪心算法(二)
考研·算法·贪心算法
小资同学7 分钟前
考研机试之递归与贪心算法
算法·华为·贪心算法
一天拉了7遍7 分钟前
安利一款超实用的前端可视化打印设计器:Vue Print Designer
前端·javascript·vue.js
我能坚持多久8 分钟前
链式二叉树OJ问题详解
算法
遗憾随她而去.9 分钟前
js 插件 Clipboard.js 与原生 Clipboard API 全方位对比
开发语言·前端·javascript
kyriewen9 分钟前
作用域与作用域链:JS 的“找东西”逻辑,闭包到底是个啥?
前端·javascript·ecmascript 6