题目

给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2。请你找出并返回这两个正序数组的中位数 。
算法的时间复杂度应该为 O(log⁡(m+n))O(\log (m+n))O(log(m+n)) 。

示例1

输入:nums1 = [1, 3], nums2 = [2]
输出:2.00000
解释:合并数组 = [1, 2, 3] ,中位数 2

示例2

输入:nums1 = [1, 2], nums2 = [3, 4]
输出:2.50000
解释:合并数组 = [1, 2, 3, 4] ,中位数 (2 + 3) / 2 = 2.5

示例3

输入:nums1 = [0, 0], nums2 = [0, 0]
输出:0.00000

示例4

输入:nums1 = [ ], nums2 = [1]
输出:1.00000

示例5

输入:nums1 = [2], nums2 = [ ]
输出:2.00000

分析

长度为 mmm 的 111 数组, 长度为 nnn 的 222 数组
1.简单来说, 本问题就是一个合并数组问题, 合并后的数组长度为 (m+n)(m+n)(m+n).
2.题目中要求时间复杂度为 O(log⁡(m+n))O(\log (m+n))O(log(m+n)), 那么不能使用双重循环的暴力解法, 那么可以同时对两数组进行遍历, 数字小的元素就存放在新数组中.
3.基于步骤2会产生两种情况,
(1)111 数组先遍历完
(2)222 数组先遍历完
那么对于没遍历完的数组, 直接将其剩余的元素存放在新数组中, 因为它本来就已经满足有序条件了.
4.最后输出中位数即可

Code

from typing import Listclass Solution:def findMedianSortedArrays(self, nums1: List[int], nums2: List[int]) -> float:length1 = len(nums1)length2 = len(nums2)tempList = []i = 0j = 0while i < length1 and j < length2:if nums1[i] <= nums2[j]:tempList.append(nums1[i])i += 1else:tempList.append(nums2[j])j += 1while j < length2:tempList.append(nums2[j])j += 1while i < length1:tempList.append(nums1[i])i += 1tempLength = len(tempList)if tempLength % 2 == 1:return tempList[tempLength // 2]else:return (tempList[tempLength // 2] + tempList[tempLength // 2 - 1]) * 0.5# Test
test = Solution()
a = test.findMedianSortedArrays([1, 2], [3, 4])print(a)

LeetCode4 寻找两个正序数组的中位数相关推荐

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

    https://leetcode-cn.com/problems/median-of-two-sorted-arra 解决方案 Go 版本 func findMedianSortedArrays(nu ...

  2. 【LeetCode】4.寻找两个正序数组的中位数

    4.寻找两个正序数组的中位数 一.问题描述 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2.请你找出并返回这两个正序数组的 中位数 . 二.问题简化 所谓中位数,就 ...

  3. 【LeetCode】【HOT】4. 寻找两个正序数组的中位数(二分查找)

    [LeetCode][HOT]4. 寻找两个正序数组的中位数 文章目录 [LeetCode][HOT]4. 寻找两个正序数组的中位数 package hot;public class Solution ...

  4. [二分搜索|快速选择] leetcode 4 寻找两个正序数组的中位数

    [二分搜索|快速选择] leetcode 4 寻找两个正序数组的中位数 1.题目 题目链接 给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2.请你找出并返回这两个正序数组 ...

  5. 2022-6-13 全O(1)的数据结构,两数相加,无重复字符的最长子串,寻找两个正序数组的中位数,盛最多水的容器,......

    1. 全 O(1) 的数据结构 Design a data structure to store the strings' count with the ability to return the s ...

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

    寻找两个正序数组的中位数 时隔许久,我又回来了. 题目:给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2.请你找出并返回这两个正序数组的中位数. 要求算法的时间复杂度为O(log( ...

  7. java打乱一组正序数字,Leetcode︱4.Median of Two Sorted Arrays寻找两个正序数组的中位数.java...

    题目 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2.请你找出并返回这两个正序数组的 中位数 . 示例 : 输入:nums1 = [1,3], nums2 = [2 ...

  8. 算法:寻找两个正序数组的中位数。

    给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2. 请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和  ...

  9. 寻找两个正序数组的中位数——冒泡排序(归并排序)

    给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2.请你找出并返回这两个正序数组的 中位数 . 冒泡算法 class Solution {public double f ...

  10. Leetcode每日必刷题库第4题,如何寻找两个正序数组的中位数?

    题目: 给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2. 请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums ...

最新文章

  1. 谷歌推出新模型「pQRNN」,少量参数下进行文本分类,性能堪比BERT
  2. mysql分组后组内排序_数据小白的转行之路-MYSQL(七)
  3. linux scp 断点续传 rsync 命令简介
  4. GetMessage和PeekMessage的区别
  5. 【PAT (Advanced Level) Practice】PAT (Advanced Level) Practice
  6. 梦断代码阅读笔记01
  7. Java:内部类之成员内部类,内部类之匿名内部类
  8. SAP收货后更改采购单价格
  9. Linux学习之遇到的小问题---查看系统版本,虚拟机创建共享文件夹,用到的命令记录。
  10. dibian+9+oracle+java_debian – 安装了Oracle Java,但在安装软件时,我得到了`你的Java版本不受支持....
  11. 玩JerseyTest(Jersey 2.5.1和DI)
  12. dhs手术是什么意思_#下颌角手术# #磨骨瘦脸# 下颌角手术多少钱?
  13. Web前端和后端开发的区别和要求
  14. mysql格式化日期成分_MySQL格式化日期
  15. 在WCF中启用事务的6个步骤
  16. VMware View 4.5: 轻松击败竞争对手
  17. 如何将PDF转换为DOCX?
  18. 通信电子线路高如云pdf_通信电子线路 第三版 教学课件 高如云 封面及目录.pdf...
  19. 筛选中很容易粘贴到被隐藏部分_在Excel中粘贴时如何跳过隐藏行
  20. Android可达性分析,基于时间距离的机会网络可达性分析及应用

热门文章

  1. priority_queue用法
  2. TX2不支持TensorRT INT8,int8 官方参考
  3. 3月22 坐标系转换,旋转矩阵,仿射变换,例子,相机与世界,欧拉角与轴角公式,一个坐标系下面的轨迹
  4. 2.架构设计的敏捷视图
  5. scala case class与class区别
  6. 第三季-第26课-网络并发服务器设计
  7. 【CITE】C#默认以管理员身份运行程序实现代码
  8. 转载:Charles 使用过程中遇到问题
  9. 【原创】Linux下追加磁盘空间的方法
  10. nginx编译和调试