LeetCode 4 题解

简介: LeetCode 4 题解

LeetCode 4 题解



给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。

请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。

你可以假设 nums1 和 nums2 不会同时为空。


示例 1:


nums1 = [1, 3]
nums2 = [2]

则中位数是 2.0


示例 2:


nums1 = [1, 2]
nums2 = [3, 4]

则中位数是 (2 + 3)/2 = 2.5

解题:思路是:归并之后,取中间值


class Solution {
    public double findMedianSortedArrays(int[] nums1, int[] nums2) {
        int len = nums1.length + nums2.length;
        int[] a = new int[len];
        int k = 0;
        for (int i = 0; i < nums1.length; i++) {
            a[k++] = nums1[i];
        }
        for (int i = 0; i < nums2.length; i++) {
            a[k++] = nums2[i];
        }
        mergesort(a, 0, len - 1);
        if (len % 2 == 1) {
            return (double) a[len / 2];
        } else {
            return (double) (a[len / 2 - 1] + a[len / 2]) / 2;
        }
    }
     /**
     * @param a
     * @param i
     * @param length
     */
    private void mergesort(int[] a, int start, int end) {
        if (end > start) {
            int mid = (start + end) / 2;
            mergesort(a, start, mid);
            mergesort(a, mid + 1, end);
            merge(a, start, mid, end);
        }
    }
    /**
     * @param a
     * @param start
     * @param i
     * @param end
     */
    private void merge(int[] a, int start, int mid, int end) {
        // 二分 start -mid 是一个,mid -end 是一个
        int[] b = new int[end + 1];
        int k = start;
        int i, j;
        for (i = start, j = mid + 1; i <= mid && j <= end; k++) {
            if (a[i] < a[j]) {
                b[k] = a[i++];
            } else {
                b[k] = a[j++];
            }
        }
        while (j <= end) {
            b[k++] = a[j++];
        }
        while (i <= mid) {
            b[k++] = a[i++];
        }
        for (int l = start; l <= end; l++) {
            a[start++] = b[l];
        }
    }
}
相关文章
|
1天前
|
云安全 人工智能 安全
AI被攻击怎么办?
阿里云提供 AI 全栈安全能力,其中对网络攻击的主动识别、智能阻断与快速响应构成其核心防线,依托原生安全防护为客户筑牢免疫屏障。
|
11天前
|
域名解析 人工智能
【实操攻略】手把手教学,免费领取.CN域名
即日起至2025年12月31日,购买万小智AI建站或云·企业官网,每单可免费领1个.CN域名首年!跟我了解领取攻略吧~
|
5天前
|
安全 Java Android开发
深度解析 Android 崩溃捕获原理及从崩溃到归因的闭环实践
崩溃堆栈全是 a.b.c?Native 错误查不到行号?本文详解 Android 崩溃采集全链路原理,教你如何把“天书”变“说明书”。RUM SDK 已支持一键接入。
448 192
|
3天前
|
数据采集 消息中间件 人工智能
跨系统数据搬运的全方位解析,包括定义、痛点、技术、方法及智能体解决方案
跨系统数据搬运打通企业数据孤岛,实现CRM、ERP等系统高效互通。伴随数字化转型,全球市场规模超150亿美元,中国年增速达30%。本文详解其定义、痛点、技术原理、主流方法及智能体新范式,结合实在Agent等案例,揭示从数据割裂到智能流通的实践路径,助力企业降本增效,释放数据价值。
|
9天前
|
人工智能 自然语言处理 安全
国内主流Agent工具功能全维度对比:从技术内核到场景落地,一篇读懂所有选择
2024年全球AI Agent市场规模达52.9亿美元,预计2030年将增长至471亿美元,亚太地区增速领先。国内Agent工具呈现“百花齐放”格局,涵盖政务、金融、电商等多场景。本文深入解析实在智能实在Agent等主流产品,在技术架构、任务规划、多模态交互、工具集成等方面进行全维度对比,结合市场反馈与行业趋势,为企业及个人用户提供科学选型指南,助力高效落地AI智能体应用。
|
5天前
|
消息中间件 安全 NoSQL
阿里云通过中国信通院首批安全可信中间件评估
近日,由中国信通院主办的 2025(第五届)数字化转型发展大会在京举行。会上,“阿里云应用服务器软件 AliEE”、“消息队列软件 RocketMQ”、“云数据库 Tair”三款产品成功通过中国信通院“安全可信中间件”系列评估,成为首批获此认证的中间件产品。此次评估覆盖安全可信要求、功能完备性、安全防护能力、性能表现、可靠性与可维护性等核心指标,标志着阿里云中间件产品在多架构适配与安全能力上达到行业领先水平。
315 195

热门文章

最新文章