長街聽風

文章 评论 浏览 30

長街聽風 2022-05-04 13:57:07

看一道面试题:

已知如下数组:var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10];

编写一个程序将数组扁平化去并除其中重复部分数据,最终得到一个升序且不重复的数组

答案:

var arr = [ [1, 2, 2], [3, 4, 5, 5], [6, 7, 8, 9, [11, 12, [12, 13, [14] ] ] ], 10]
// 扁平化
let flatArr = arr.flat(4)
// 去重
let disArr = Array.from(new Set(flatArr))
// 排序
let result = disArr.sort(function(a, b) {
    return a-b
})
console.log(result)
// [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14]

关于 Set 请查阅 Set、WeakSet、Map及WeakMap

本文首发于我的博客:数组扁平化、去重、排序

第 11 题:将数组扁平化并去除其中重复数据,最终得到一个升序且不重复的数组

長街聽風 2022-05-04 13:55:48
var findMedianSortedArrays = function(nums1, nums2) {
    //先归并 归并结束求中位数
    var arr = [];
    while(nums1.length|| nums2.length){
        if(nums1.length==0&&nums2.length){
            arr = [...arr,...nums2];
            break;
        }
        if(nums2.length==0&&nums1.length){
            arr = [...arr,...nums1];
            break;
        }
        if(nums1[0]<=nums2[0]){
            arr.push(nums1.shift());
        }else{
            arr.push(nums2.shift());
        }
       
    }
    var half = Math.ceil(arr.length/2);
    if(arr.length%2==0){
        return (arr[half] + arr[half-1])/2;
    }else{
        return arr[half-1];
    }   
};

第 93 题:给定两个大小为 m 和 n 的有序数组 nums1 和 nums2,请找出这两个有序数组的中位数。要求算法的时间复杂度为 O(log(m+n))。

更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

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