LeetCode 4 — Median of Two Sorted Arrays(两个排序数组的中位数)

There are two sorted arrays nums1 and nums2 of size m and n respectively.
Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).

Example 1:
nums1 = [1, 3]
nums2 = [2]
The median is 2.0
Example 2:
nums1 = [1, 2]
nums2 = [3, 4]
The median is (2 + 3)/2 = 2.5

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

示例 1:
nums1 = [1, 3]
nums2 = [2]
中位数是 2.0
示例 2:
nums1 = [1, 2]
nums2 = [3, 4]
中位数是 (2 + 3)/2 = 2.5

分析
归并两个数组,取新数组中间数组的中间元素。(这个算法的复杂度应该是O(n)的,不知道为什么也过了)

c++实现

class Solution {
public:
    double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
        int max = pow(2,31)-1;
        int i = 0,j = 0,a = 0,b = 0;
        double result;
        vector<int> num;
        while (i < nums1.size() || j < nums2.size())
        {
            a = (i < nums1.size() ? nums1[i] : max);
            b = (j < nums2.size() ? nums2[j] : max);
            num.push_back(a < b ? a : b);
            a < b ? i++ : j++;
        }
        if (num.size()%2 == 0)
            result = (num[num.size()/2-1]+num[num.size()/2])/2.0;
        else
            result = num[num.size()/2];
        return result;
    }
};
阅读更多
文章标签: leetcode
个人分类: 算法笔记
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

LeetCode 4 — Median of Two Sorted Arrays(两个排序数组的中位数)

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭