力扣第4题寻找两个正序数组的中位数
- 开源代码
- 2025-09-02 11:33:01

力扣第4题
给定两个大小分别为 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 == mnums2.length == n0 <= m <= 10000 <= n <= 10001 <= m + n <= 2000-106 <= nums1[i], nums2[i] <= 106 class Solution { public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { // 定义i j 两个指针来分别指针2个数组 // 定义 l r 分别来保存中位数 ,奇数个只会用到l ,偶数个l , r都会运用到 int m = nums1.size(); int n = nums2.size(); int i = 0 , j = 0 , l = 0 , r = 0 ; for(int x = 0 ; x <= ( m + n ) / 2 ; ++x) { l = r ; r = (i < m && (j >= n || nums1[i] <nums2[j])) ? nums1[i++] : nums2[j++] ; } return (m + n) & 1 ? r : (l + r) / 2.0; } };力扣第4题寻找两个正序数组的中位数由讯客互联开源代码栏目发布,感谢您对讯客互联的认可,以及对我们原创作品以及文章的青睐,非常欢迎各位朋友分享到个人网站或者朋友圈,但转载请说明文章出处“力扣第4题寻找两个正序数组的中位数”