网站建设迅雷全网营销公司
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];}}}
}