力扣HOT100 - 4. 寻找两个正序数组的中位数

解题思路:

两个数组合并,然后根据奇偶返回中位数。

java 复制代码
class Solution {
    public double findMedianSortedArrays(int[] nums1, int[] nums2) {
        int m = nums1.length;
        int n = nums2.length;
        int[] nums = new int[m + n];
        if (m == 0) {
            if (n % 2 == 0) return (nums2[n / 2 - 1] + nums2[n / 2]) / 2.0;
            else return nums2[n / 2];
        }
        if (n == 0) {
            if (m % 2 == 0) return (nums1[m / 2 - 1] + nums1[m / 2]) / 2.0;
            else return nums1[m / 2];
        }

        int cnt = 0;
        int i = 0, j = 0;
        while (cnt != (m + n)) {
            if (nums1[i] < nums2[j]) nums[cnt++] = nums1[i++];
            else nums[cnt++] = nums2[j++];

            if (i == m) {
                while (j != n)
                    nums[cnt++] = nums2[j++];
            }
            if (j == n) {
                while (i != m)
                    nums[cnt++] = nums1[i++];
            }
        }
        if (cnt % 2 == 0) return (nums[cnt / 2 - 1] + nums[cnt / 2]) / 2.0;
        else return nums[cnt / 2];
    }
}
相关推荐
笨蛋不要掉眼泪2 分钟前
Java虚拟机:堆的参数配置
java·开发语言·jvm
霸道流氓气质5 分钟前
SpringBoot中使用JasperReports 报表引擎 — 介绍、原理与使用实践
java·spring boot·后端
花生了什么事o10 分钟前
DDD 分层架构:六层分层架构
java·架构·ddd
闪电悠米14 分钟前
力扣hot100-54.螺旋矩阵-模拟边界控制详解
算法·leetcode·矩阵
变量未定义~22 分钟前
虚拟节点-星石传送阵(4星)、强连通分量
数据结构·算法
IT方大同41 分钟前
C语言分支与循环语句
c语言·开发语言·算法
qq_150841991 小时前
SQL的insert和update二合一指令
java·数据库·sql
2601_964702891 小时前
Claude Opus 5 API 开发实战:对话、文本生成与结构化输出
java·服务器·前端
Sayuanni%31 小时前
Spring IOC
java·spring·rpc
风景的人生1 小时前
流式输出与springboot中的响应式编程
java·spring boot·ai编程