LeetCode4 寻找两个正序数组的中位数
题目
给定两个大小分别为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 寻找两个正序数组的中位数相关推荐
- LeetCode 4 寻找两个正序数组的中位数
https://leetcode-cn.com/problems/median-of-two-sorted-arra 解决方案 Go 版本 func findMedianSortedArrays(nu ...
- 【LeetCode】4.寻找两个正序数组的中位数
4.寻找两个正序数组的中位数 一.问题描述 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2.请你找出并返回这两个正序数组的 中位数 . 二.问题简化 所谓中位数,就 ...
- 【LeetCode】【HOT】4. 寻找两个正序数组的中位数(二分查找)
[LeetCode][HOT]4. 寻找两个正序数组的中位数 文章目录 [LeetCode][HOT]4. 寻找两个正序数组的中位数 package hot;public class Solution ...
- [二分搜索|快速选择] leetcode 4 寻找两个正序数组的中位数
[二分搜索|快速选择] leetcode 4 寻找两个正序数组的中位数 1.题目 题目链接 给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2.请你找出并返回这两个正序数组 ...
- 2022-6-13 全O(1)的数据结构,两数相加,无重复字符的最长子串,寻找两个正序数组的中位数,盛最多水的容器,......
1. 全 O(1) 的数据结构 Design a data structure to store the strings' count with the ability to return the s ...
- 寻找两个正序数组的中位数
寻找两个正序数组的中位数 时隔许久,我又回来了. 题目:给定两个大小分别为m和n的正序(从小到大)数组nums1和nums2.请你找出并返回这两个正序数组的中位数. 要求算法的时间复杂度为O(log( ...
- java打乱一组正序数字,Leetcode︱4.Median of Two Sorted Arrays寻找两个正序数组的中位数.java...
题目 给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2.请你找出并返回这两个正序数组的 中位数 . 示例 : 输入:nums1 = [1,3], nums2 = [2 ...
- 算法:寻找两个正序数组的中位数。
给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2. 请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 ...
- 寻找两个正序数组的中位数——冒泡排序(归并排序)
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2.请你找出并返回这两个正序数组的 中位数 . 冒泡算法 class Solution {public double f ...
- Leetcode每日必刷题库第4题,如何寻找两个正序数组的中位数?
题目: 给定两个大小为 m 和 n 的正序(从小到大)数组 nums1 和 nums2. 请你找出这两个正序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums ...
最新文章
- 谷歌推出新模型「pQRNN」,少量参数下进行文本分类,性能堪比BERT
- mysql分组后组内排序_数据小白的转行之路-MYSQL(七)
- linux scp 断点续传 rsync 命令简介
- GetMessage和PeekMessage的区别
- 【PAT (Advanced Level) Practice】PAT (Advanced Level) Practice
- 梦断代码阅读笔记01
- Java:内部类之成员内部类,内部类之匿名内部类
- SAP收货后更改采购单价格
- Linux学习之遇到的小问题---查看系统版本,虚拟机创建共享文件夹,用到的命令记录。
- dibian+9+oracle+java_debian – 安装了Oracle Java,但在安装软件时,我得到了`你的Java版本不受支持....
- 玩JerseyTest(Jersey 2.5.1和DI)
- dhs手术是什么意思_#下颌角手术# #磨骨瘦脸# 下颌角手术多少钱?
- Web前端和后端开发的区别和要求
- mysql格式化日期成分_MySQL格式化日期
- 在WCF中启用事务的6个步骤
- VMware View 4.5: 轻松击败竞争对手
- 如何将PDF转换为DOCX?
- 通信电子线路高如云pdf_通信电子线路 第三版 教学课件 高如云 封面及目录.pdf...
- 筛选中很容易粘贴到被隐藏部分_在Excel中粘贴时如何跳过隐藏行
- Android可达性分析,基于时间距离的机会网络可达性分析及应用