若水微香

文章 评论 浏览 27

若水微香 2022-05-04 13:57:18
var a1 = ['A1', 'A2', 'B1', 'B2', 'C1', 'C2', 'D1', 'D2']
var a2 = ['A', 'B', 'C', 'D']
function mergeArray1(a1, a2) {
    //时间复杂度过高不予考虑,估计O(n^3+n)
    //思路先给a2填充3,排序后再去掉3
    a2 = a2.map((item) => item + 3)
    let temp = [...a1, ...a2]
    return temp.sort().map((item) => {
        if (item.includes('3')) {
            return item.slice(0, 1)
        }
        return item
    })

}
function mergeArray2(a1, a2) {
    //时间复杂度过高不予考虑,估计O(n^2)
    //思路双重排序
    // return [...a1, ...a2].sort().sort(function (a, b) {
    //     if (a.charAt(0) == b.charAt(0) && a.length > b.length) {
    //         return -1
    //     }
    // })
    //个人认为最好的解法,大概O(n)
    //思路为一次排序,||:前者为真就不看后者,先根据首字母判断排序,在根据长短把短的排后面,最后根据尾号排序
    //
    return [...a1, ...a2].sort(
        (a, b) => (
            a.codePointAt(0) - b.codePointAt(0) ||
            b.length - a.length ||
            a.codePointAt(1) - b.codePointAt(1)
        )
    )
}
console.log(mergeArray2(a1, a2));

第 30 题:请把俩个数组 [A1, A2, B1, B2, C1, C2, D1, D2] 和 [A, B, C, D],合并为 [A1, A2, A, B1, B2, B, C1, C2, C, D1, D2, D]

更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文