LeetCode-C#-0004.寻找两个正序数组的中位数

0.声明

该题目来源于LeetCode
如有侵权,立马删除。
解法不唯一,如有新解法可一同讨论。

1.题目

0004寻找两个正序数组的中位数
给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2。
请你找出并返回着两个正序数组的中位数。
算法的时间复杂度应该为O(log (m+n))。

示例 1:
输入:nums1 = [1,3], nums2 = [2]
输出:2.00000
解释:合并数组 = [1,2,3] ,中位数 2

示例 2:
输入:nums1 = [1,2], nums2 = [3,4]
输出:2.50000
解释:合并数组 = [1,2,3,4] ,中位数 (2 + 3) / 2 = 2.5

提示:
nums1.length == m
nums2.length == n
0 <= m <= 1000
0 <= n <= 1000
1 <= m + n <= 2000
-106 <= nums1[i], nums2[i] <= 106

2.代码

namespace LeetCode_0004寻找两个正序数组的中位数
{
    class Program
    {
        static void Main(string[] args)
        {
            int[] nums1 = { 1, 2 };
            int[] nums2 = { 3, 4 };

            LeetCode_FindMedianSortArrays LFMSA = new LeetCode_FindMedianSortArrays();
            double d_Result = LFMSA.FindMedianSortedArrays(nums1, nums2);

            Console.WriteLine(d_Result);

            Console.ReadKey();
        }
    }


    class LeetCode_FindMedianSortArrays
    {
        public double FindMedianSortedArrays(int[] nums1, int[] nums2)
        {
            int m = nums1.Length;
            int n = nums2.Length;
            int len = m + n;
            var resultIndex = len / 2;
            List<int> result = new List<int>(nums1);
            result.AddRange(nums2);
            result.Sort();
            if (len % 2 == 0)
            {
                return (result[resultIndex - 1] + result[resultIndex]) / 2.0;
            }

            else
            {
                return result[resultIndex];
            }
        }
    }
}

你可能感兴趣的:(LeetCode刷题_C#解题,leetcode,算法,数据结构)