daybydoris / algorithms

0 stars 0 forks source link

LeetCode: 4. Median of Two Sorted Arrays #2

Open daybydoris opened 2 years ago

daybydoris commented 2 years ago

https://leetcode.com/problems/median-of-two-sorted-arrays/

daybydoris commented 2 years ago
var findMedianSortedArrays = function(nums1, nums2) {
    const mergedArray = nums1.concat(nums2).sort((a,b)=>a-b);
    const length = mergedArray.length;

    if(length%2===0) {
        const half = length/2;
        return (mergedArray[half-1]+mergedArray[half])/2;
    } else {
        const half = Math.floor(length/2);
        return mergedArray[half]
    }
}

image

daybydoris commented 2 years ago

배열 merge 부분을 다르게 풀기

var findMedianSortedArrays = function(nums1, nums2) {
    const len1=nums1.length;
    const len2=nums2.length;
    const merged=[];
    let l=0, r=0;

    while(l<len1&&r<len2){
        if(nums1[l]<nums2[r]){
            merged.push(nums1[l]);
            l++;
        } else if(nums2[r]<nums1[l]){
            merged.push(nums2[r]);
            r++;
        } else if(nums1[l]===nums2[r]){
            merged.push(nums1[l], nums2[r]);
            l++;
            r++;
        }
    }

    if(l<len1) {
        for(l;l<len1;l++) {
            merged.push(nums1[l]);
        }
    } else if(r<len2){
        for(r;r<len2;r++){
            merged.push(nums2[r]);
        }       
    }

    const length = merged.length;

    if(length%2===0) {
        const half = length/2;
        return (merged[half-1]+merged[half])/2;
    } else {
        const half = Math.floor(length/2);
        return merged[half]
    }
};

image