Blage's Coding Blage's Coding
Home
算法
  • 手写Spring
  • SSM
  • SpringBoot
  • JavaWeb
  • JAVA基础
  • 容器
  • Netty

    • IO模型
    • Netty初级
    • Netty原理
  • JVM
  • JUC
  • Redis基础
  • 源码分析
  • 实战应用
  • 单机缓存
  • MySQL

    • 基础部分
    • 实战与处理方案
    • 面试
  • ORM框架

    • Mybatis
    • Mybatis_Plus
  • SpringCloudAlibaba
  • MQ消息队列
  • Nginx
  • Elasticsearch
  • Gateway
  • Xxl-job
  • Feign
  • Eureka
  • 面试
  • 工具
  • 项目
  • 关于
🌏本站
🧸GitHub (opens new window)
Home
算法
  • 手写Spring
  • SSM
  • SpringBoot
  • JavaWeb
  • JAVA基础
  • 容器
  • Netty

    • IO模型
    • Netty初级
    • Netty原理
  • JVM
  • JUC
  • Redis基础
  • 源码分析
  • 实战应用
  • 单机缓存
  • MySQL

    • 基础部分
    • 实战与处理方案
    • 面试
  • ORM框架

    • Mybatis
    • Mybatis_Plus
  • SpringCloudAlibaba
  • MQ消息队列
  • Nginx
  • Elasticsearch
  • Gateway
  • Xxl-job
  • Feign
  • Eureka
  • 面试
  • 工具
  • 项目
  • 关于
🌏本站
🧸GitHub (opens new window)
  • 数组

    • 搜索

    • 二分查找

      • 4.寻找两个正序数组中的中位数
      • 33.搜索旋转排序数组
      • 162.寻找峰值
      • 287. 寻找重复数
      • 2517. 礼盒的最大甜蜜度
      • 1170. 比较字符串最小字母出现频次
      • 34. 在排序数组中查找元素的第一个和最后一个位置
      • 2594. 修车的最少时间
      • 2560. 打家劫舍 IV
      • 2861. 最大合金数
      • 2258. 逃离火灾
      • 2008. 出租车的最大盈利
      • 1901. 寻找峰值 II
      • 410. 分割数组的最大值
    • 排序

    • 边界判断

    • 双指针法

    • 连续子数组

    • 差分数组

    • 模拟

    • 区间问题

  • 链表

  • 字符串

  • 二叉树

  • 动态规划

  • 深搜回溯

  • 数学贪心

  • 堆栈队列

  • 前缀和

  • 算法设计

  • 位运算

  • WA

  • 算法
  • 数组
  • 二分查找
phan
2023-05-16

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

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

给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。

输入:nums1 = [1,2], nums2 = [3,4] 输出:2.50000

  1. 用两个指针分别指向两个数组,每次比较中,指向元素更小的指针向右移动,计数加一。时间O(m+n)

  2. 二分查找,比较难想到,而且边界控制条件比较恶心,没写出来。大体思路如下:

    要找到两个数组中第k个元素,可以比较A[left1+k/2-1]和B[left2+k/2-1],前面分别有A[left1...left1+k/2-2]和A[left2...left2+k/2-2],即k/2-1个元素,假设A[left1+k/2-1]为两者中的较小值,则比A[left1+k/2-1]小的元素最多只有A和B的前k/2-1个元素,即最多总共只有k-2个元素,因此A[left1+k/2-1]不可能是第k个元素,A[left1]到A[left1+k/2-2]也不可能是,全都可以排除,更新左节点left1=left1+k/2,并且令k值减去排除掉的数目。k为0时找到的元素即为所求。时间O(log(m+n))。

编辑 (opens new window)
#Leetcode#二分查找
上次更新: 2023/12/15, 15:49:57
剑指 Offer 46. 把数字翻译成字符串
33.搜索旋转排序数组

← 剑指 Offer 46. 把数字翻译成字符串 33.搜索旋转排序数组→

Theme by Vdoing | Copyright © 2023-2024 blageCoder
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式