前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >04.寻找两个正序数组的中位数

04.寻找两个正序数组的中位数

作者头像
taixingyiji
发布于 2022-07-25 08:11:51
发布于 2022-07-25 08:11:51
23400
代码可运行
举报
运行总次数:0
代码可运行

# 04.寻找两个正序数组的中位数

难度:困难

给定两个大小为 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 示例 3:

输入:nums1 = [0,0], nums2 = [0,0] 输出:0.00000 示例 4:

输入:nums1 = [], nums2 = [1] 输出:1.00000 示例 5:

输入:nums1 = [2], nums2 = [] 输出:2.00000

提示:

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

# 暴力

# 思路

先将两个数组合成一个数组,进行遍历

# 代码

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
class Solution {
    public double findMedianSortedArrays(int[] nums1, int[] nums2) {
        int m = nums1.length, n = nums2.length;
        if (m == 0) {
            return getMid(nums2);
        }
        if (n == 0) {
            return getMid(nums1);
        }
        int[] temp = new int[m + n];
        int i = 0, j = 0, count = 0;
        while (count != (m + n)) {
            if (i == m) {
                while (j != n) {
                    temp[count++] = nums2[j++];
                }
                break;
            }
            if (j == n) {
                while (i != m) {
                    temp[count++] = nums1[i++];
                }
                break;
            }
            if (nums1[i] < nums2[j]) {
                temp[count++] = nums1[i++];
            } else {
                temp[count++] = nums2[j++];
            }
        }
        return getMid(temp);
    }

    public double getMid(int[] nums) {
        if (nums.length % 2 == 0) {
            return (nums[nums.length / 2] + nums[nums.length / 2 - 1]) / 2.0;
        } else {
            return nums[nums.length / 2];
        }
    }
}

# 二分法

待补充

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2021-01-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
leetcode-寻找两个正序数组的中位数
https://leetcode-cn.com/problems/median-of-two-sorted-arrays/
手撕代码八百里
2020/10/26
3500
LeetCode139|寻找两个正序数组的中位数
给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。
码农王同学
2020/12/25
3420
004. 寻找两个正序数组的中位数 | Leetcode题解
给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。
苏南
2020/12/16
1.5K0
004. 寻找两个正序数组的中位数 | Leetcode题解
《三战Leetcode》寻找有序数组的中位数
  大家好,又到了三分钟算法修行时间,之前挑选的算法都是中低难度的,这次找个难度较高的,看看会遇到啥问题。至于难到啥程度,来看看Leetcode下解题的网友评论。
IT学习日记
2022/09/13
3290
《三战Leetcode》寻找有序数组的中位数
LeetCode【4】-- 寻找两个正序数组的中位数
给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。
秦怀杂货店
2022/02/15
3010
力扣4-寻找两个正序数组的中位数
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
后端码匠
2021/08/18
3210
4. 寻找两个正序数组的中位数
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。 示例 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 示例 3: 输入:nums1
编程张无忌
2021/07/01
4710
每日一道leetcode:4. 寻找两个正序数组的中位数
给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2。请你找出并返回这两个正序数组的 中位数 。
felixzhao
2023/04/06
2300
两个正序数组 找中位数_leetcode合并两个有序数组
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
全栈程序员站长
2022/09/22
3620
C语言每日一题(39)寻找两个正序数组的中位数
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
对编程一片赤诚的小吴
2024/01/23
1490
算法Code-求两个排序数组的中位数
这个思路就是对于两个有序数组进行合并,合并到一个大的有序的数组中去,然后求合并后数组的中位数。下面代码中使用的是归并排序的方式,对于两个有序数组进行归并排序的。从复杂度的角度来说可以满足题目的要求,但是还是存在一些问题,主要是怎么能够使得时间复杂度变成O{MIN(nums1.length,nums2.leng)}。
磊叔的技术博客
2025/06/07
670
算法Code-求两个排序数组的中位数
寻找两个正序数组的中位数(C++)
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
GeekLiHua
2025/01/21
570
Leetcode算法系列| 4. 寻找两个正序数组的中位数
方法三中,i 和 j 每次向右移动一位时,相当于去掉了一个不可能是中位数的值,也就是一个一个的排除。由于给定的两个数组是有序的,所以我们完全可以一半一半的排除。假设我们要找第 k 小数,我们每次循环可以安全的排除掉 k/2 个数。
游戏开发小Y
2024/01/18
1500
Leetcode算法系列| 4. 寻找两个正序数组的中位数
【力扣刷题】4. 寻找两个正序数组的中位数
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
jayjay
2022/11/02
2210
【力扣刷题】4. 寻找两个正序数组的中位数
【一天一大 lee】寻找两个正序数组的中位数 (难度:困难) - Day20201003
给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。
前端小书童
2020/10/14
3690
leetcode刷题(114)——4. 寻找两个正序数组的中位数
给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。
老马的编程之旅
2022/06/22
3010
leetcode刷题(114)——4. 寻找两个正序数组的中位数
LeetCode(4-寻找两个正序数组的中位数&&5-最长回文子串&&6-Z形变换)
首先我们需要明白一点,那就是重新组合后的数组长度为奇数或者偶数的时候,中位数的计算方式是不一样的.
萌萌哒的瓤瓤
2022/01/06
2120
LeetCode(4-寻找两个正序数组的中位数&&5-最长回文子串&&6-Z形变换)
LeetCode 寻找两个正序数组的中位数(分治)
给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。
SakuraTears
2022/01/13
2450
LeetCode(4-寻找两个正序数组的中位数&&5-最长回文子串&&6-Z形变换)
如果觉得UP写的不错的话,可以点击上方蓝字关注哦,后续会持续更新LeetCode题解.
萌萌哒的瓤瓤
2021/02/07
4380
LeetCode(4-寻找两个正序数组的中位数&&5-最长回文子串&&6-Z形变换)
【刷穿 LeetCode】4. 寻找两个正序数组的中位数(困难)
给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的中位数。
宫水三叶的刷题日记
2021/02/20
3740
推荐阅读
相关推荐
leetcode-寻找两个正序数组的中位数
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档