4. Median of Two Sorted Arrays

题目链接:https://leetcode.com/problems/median-of-two-sorted-arrays/description/
这道题解答貌似并没有什么难度,但是却有时间复杂度的限制。对于我这种算法战五渣来说能写出实现就已经很好了,所以我先写了个最简单的答案:

public static double findMedianSortedArrays(int[] nums1, int[] nums2) {
    int[] nums = new int[nums1.length + nums2.length];
    int k = 0;
    int i = 0, j = 0;
    while (i < nums1.length && j < nums2.length) {
        if (nums1[i] == nums2[j]) {
            nums[k++] = nums1[i++];
            nums[k++] = nums2[j++];
        } else if (nums1[i] < nums2[j]) {
            nums[k++] = nums1[i++];
        } else {
            nums[k++] = nums2[j++];
        }
    }
    if (i == nums1.length) {
        while (j < nums2.length) {
            nums[k++] = nums2[j++];
        }
    } else {
        while (i < nums1.length) {
            nums[k++] = nums1[i++];
        }
    }
    if (nums.length % 2 == 0) {
        return (nums[nums.length / 2 - 1] + nums[nums.length / 2]) / 2.f;
    } else {
        return nums[nums.length / 2];
    }
}

思路很简单,就是把两个数组合并为一个有序数组,然后再求中间值。
但是,这道题目的难度标识是“Hard”,所以事情并没有这么简单。。。于是,我去看了下官方答案。

posted @ 2018-02-26 10:44  optor  阅读(94)  评论(0编辑  收藏  举报