| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 数据结构与算法 -> 4.寻找两个正序数组的中位数 -> 正文阅读 |
|
[数据结构与算法]4.寻找两个正序数组的中位数 |
题目理解给定两个升序的数组,找出由这两个数组合并后的升序数组中的中位数 题解1(朴素做法——双指针合并数组)这道题首先我想到的最直观的做法就是利用双指针将两个数组合并成一个有序数组 合并之后在新数组中找出中位数即可 这种做法应该是最容易理解的 伪代码
代码
题解二题解二的思路来源于这里 在题解一中我们遍历了两个数组的所有元素,其实并不需要这样做,只需要遍历到可确定中位数的元素即可 先讨论一下奇偶性的情况,假设两个数组的总长度为len 当len为奇数时,中位数的位置在len / 2 + 1, 当len为偶数时,中位数为在len / 2 和 len / 2 + 1的两个数的平均值 所以无论len为奇数还是偶数,只需遍历到 len / 2 + 1 个元素即可,将两个数组分别称为A,B 首先初始化astart和bstart分别作为指向A,B数组的指针,left为上一次遍历到的元素值,right为当前遍历的元素值 当astart小于数组A的长度时并且bsatrt > B数组长度或 A[astart] < B[bstart]这两个条件中有一个成立一个令astart右移,否则bstart右移,right的值更新为astart或bstart指针右移之前所指向的值 注意在每次循环时都要让left的值等于right,这样处理后,在遍历结束时,right的值为遍历到最后一个元素的值,left值为最后遍历到最后一个元素的前一个元素的值
题解3(二分法)待完善 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/26 4:29:28- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |