LeetCode004-两个有序数组的中位数-最优算法代码讲解

news2024/11/13 15:07:13

最有帮助的视频讲解
【LeetCode004-两个有序数组的中位数-最优算法代码讲解】 https://www.bilibili.com/video/BV1H5411c7oC/?share_source=copy_web&vd_source=afbacdc02063c57e7a2ef256a4db9d2a
时间复杂度 O ( l o g ( m i n ( m , n ) ) ) O(log(min(m,n))) O(log(min(m,n)))
空间复杂度是 S ( 1 ) S(1) S(1)

class Solution {
public:
    double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {

        int m = nums1.size() , n = nums2.size();
        if(m > n){
            return findMedianSortedArrays(nums2,nums1);
        }
        int iMin = 0 , iMax = m;
        while(iMin <= iMax){
            int i = iMin + iMax >> 1;
            int j = (m + n + 1) / 2 - i;//公式
            if(i != 0 && j != n && nums1[i - 1 ] > nums2[j]){
                iMax = i - 1;
            }
            else if(j != 0 && i != m && nums2[j - 1] > nums1[i]){
                iMin = i + 1;
            }
            else {
                int maxLf = 0;
                if(i == 0)
                    maxLf = nums2[j - 1];
                else if(j == 0)
                    maxLf = nums1[i - 1];
                else
                    maxLf = max(nums1[i - 1],nums2[j - 1]);
                if((m + n)%2)
                    return maxLf;
                int maxRg = 0;
                if(i == m)
                    maxRg = nums2[j];
                else if(j == n)
                    maxRg = nums1[i];
                else 
                    maxRg = min(nums1[i],nums2[j]);
                return (maxLf + maxRg) / 2.0;
            }
        }
        return 0.0;

    }
};

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2145338.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

将flux1画图API封装为Dify工作流

本文主要介绍将公开的 flux1 画图 API&#xff08;https://api-flux1.api4gpt.com/&#xff09;封装为 Dify 工作流。 1.构建工作流 新建一个"聊天助手-> 工作流编排"的"flux1 工作流"&#xff1a; 总共使用了开始、HTTP 请求和直接回复 3 个节点。如…

【2025】基于微信小程序的网上点餐系统设计与实现、基于微信小程序的智能网上点餐系统、微信小程序点餐系统设计、智能点餐系统开发、微信小程序网上点餐平台设计

博主介绍&#xff1a; ✌我是阿龙&#xff0c;一名专注于Java技术领域的程序员&#xff0c;全网拥有10W粉丝。作为CSDN特邀作者、博客专家、新星计划导师&#xff0c;我在计算机毕业设计开发方面积累了丰富的经验。同时&#xff0c;我也是掘金、华为云、阿里云、InfoQ等平台…

根据 IP 地址进行 VPN 分流(详细,亲测,通用)

根据 IP 地址进行 VPN 分流&#xff08;详细&#xff0c;亲测&#xff0c;通用&#xff09; 背景 不在学校的时候需要使用实验室的服务器&#xff0c;但是实验室的服务器只能在校园网内访问&#xff0c;因此在校外就需要使用学校的 VPN&#xff0c;但是打开 VPN 以后会默认将…

除了 SEO 之外,HTML 语义化还有什么用?

每次碰到 HTML 语义化的话题&#xff0c;几乎 99% 的前端都会想到 SEO。那除了 SEO&#xff0c;你还会想到什么呢&#xff1f;好像没有了。。。 确实&#xff0c;当我们要做 SEO 的时候&#xff0c;往往第一时间都会想到优化 HTML 语义化&#xff0c;久而久之&#xff0c;大家…

Linux下rpm方式部署mysql(国产化生产环境无联网服务器部署实操)

请放心观看&#xff0c;已在正式环境部署验证&#xff0c;流程无问题&#xff01; 所用系统为国产化麒麟银河 aarch64系统&#xff0c;部署时间2024年9月份&#xff01; #查看服务器信息 #涉及生产服务器&#xff0c;所以输出信息隐藏了一部分[rootecs-xxxxx hdata]# uname -…

五、CAN总线

目录 一、基础知识 1、can介绍 2、CAN硬件电路 3、CAN电平标准 4、CAN收发器芯片介绍 5、CAN帧格式 ① CAN帧种类 ② CAN数据帧 ③ CAN遥控帧​编辑 ④ 位填充 ⑤ 波形实例 6、接收方数据采样 ① 接收方数据采样遇到的问题 ② 位时序 ③ 硬同步 ④ 再同步 ⑤ 波…

【Delphi】实现接收系统拖动文件

在 Delphi 中&#xff0c;可以通过以下步骤来实现将文件夹中的文件拖动到 Form 上&#xff0c;并在拖动时显示文件类型的光标。我们可以利用 VCL 中的 Drag and Drop 机制来处理拖动操作&#xff0c;以及自定义光标显示。 以下是详细的步骤和代码示例&#xff1a; 实现步骤&a…

MATLAB系列05:自定义函数

MATLAB系列05&#xff1a;自定义函数 5. 自定义函数5.1 MATLAB函数简介5.2 在MATLAB中传递变量&#xff1a;按值传递机制5.3 选择性参数5.4 用全局内存分享数据5.5 在函数两次调用之间本地数据的存储5.6 函数的函数(function functions)5.7 子函数和私有函数5.8 总结 5. 自定义…

问题:WINCC 7.5 结构变量只能是内部变量吗?

问题&#xff1a;WINCC 7.5 结构变量只能是内部变量吗&#xff1f; 答案&#xff1a;不是的呢&#xff0c;你创建结构的时候可以选择外部变量的 如图&#xff1a;工控人加入PLC工业自动化精英社群 #WINCC 7.5##变量##结构##西门子工业支持中心#

css五种定位总结

在 CSS 中&#xff0c;定位&#xff08;Positioning&#xff09;主要有五种模式&#xff0c;每种模式的行为和特点不同&#xff0c;以下是 static、relative、absolute、fixed 和 sticky 五种定位方式的对比总结&#xff1a; 1. static&#xff08;默认定位&#xff09; 特性…

基于SpringBoot+Vue+MySQL的在线招投标系统

系统展示 用户前台界面 管理员后台界面 系统背景 在当今商业环境中&#xff0c;招投标活动是企业获取项目、资源及合作伙伴的重要途径。然而&#xff0c;传统招投标过程往往繁琐复杂&#xff0c;涉及众多文件交换、信息审核与沟通环节&#xff0c;不仅效率低下&#xff0c;还易…

【强化学习系列】Gym库使用——创建自己的强化学习环境2:拆解官方标准模型源码/规范自定义类+打包自定义环境

目录 一、 官方标准环境的获取与理解 二、根据官方环境源码修改自定义 1.初始化__init__() 2.重置环境 reset() 三、打包环境 1.注册与创建自定义环境 2.环境规范化 在本文的早些时候&#xff0c;曾尝试按照自己的想法搭建自定义的基于gym强化学习环境。 【强化学习系列】Gy…

什么是自然语言处理

自然语言处理&#xff08;Natural Language Processing, NLP&#xff09;是计算机科学领域与人工智能领域中的一个重要方向。它研究的是如何实现人与计算机之间使用自然语言进行有效通信的各种理论和方法。以下是关于自然语言处理的详细解释&#xff1a; 一、定义与概述 定义&…

字符编码发展史2 — ISO-8859-N

2.2. 第二个阶段 本地化 2.2.1. ANSI2.2.2. ISO/IEC 8859-N 2.2.2.1. 什么是ISO/IEC 8859-N?2.2.2.2. ISO 8859-1的编码表 上一篇《字符编码发展史1 — ASCII和EASCII》我们讲解了字符编码的起源ASCII和EASCII。本篇我们将继续讲解字符编码的第二个发展阶段中的ISO 8859-N。…

西门子200SMART全面讲解

200 SMART 全面讲解工控人加入PLC工业自动化精英社群 工控人加入PLC工业自动化精英社群

如何打造出强悍的谷歌搜索关键词优化方案揭密

搭建一个成功的关键词优化规划是促进网站在谷歌搜索引擎中取得更强曝光和流量重要。本文将为你揭露七个秘笈&#xff0c;帮助自己打造出强悍的谷歌搜索关键词优化方案。1.目标制定在进行优化关键词以前&#xff0c;必须明确自己的目标。你希望用谷歌搜索引擎获得更多浏览量和访…

C++速通LeetCode简单第5题-回文链表

解法1&#xff0c;堆栈O(n)简单法&#xff1a; /*** Definition for singly-linked list.* struct ListNode {* int val;* ListNode *next;* ListNode() : val(0), next(nullptr) {}* ListNode(int x) : val(x), next(nullptr) {}* ListNode(int x, ListN…

一款屏幕录制和视频剪辑软件Camtasia 2024

Camtasia 2024是一款屏幕录制和视频剪辑软件&#xff0c;软件提供了强大的屏幕录像、视频的剪辑和编辑、视频菜单制作、视频剧场、视频播放功能、视屏白板等功能&#xff0c;支持在任何颜色模式下轻松地记录屏幕动作&#xff0c;有需要的朋友快来下载吧&#xff01; Camtasia 2…

1.pytest基础知识(默认的测试用例的规则以及基础应用)

一、pytest单元测试框架 1&#xff09;什么是单元测试框架 单元测试是指再软件开发当中&#xff0c;针对软件的最小单位&#xff08;函数&#xff0c;方法&#xff09;进行正确性的检查测试。 2&#xff09;单元测试框架 java&#xff1a;junit和testing python&#xff1a;un…

电脑怎么禁用软件?5个方法速成,小白必入!

电脑禁用软件的方法多种多样&#xff0c;以下是五种简单易行的方法. 适合不同需求的用户&#xff0c;特别是电脑小白。 1. 使用任务管理器禁用启动项 操作步骤&#xff1a;按下“Ctrl Shift Esc”组合键&#xff0c;打开任务管理器。 切换到“启动”选项卡&#xff0c;找到…