#leetcode刷题之路4-寻找两个有序数组的中位数
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。
请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。
你可以假设 nums1 和 nums2 不会同时为空。
示例 1:
nums1 = [1, 3]
nums2 = [2]
则中位数是 2.0
示例 2:
nums1 = [1, 2]
nums2 = [3, 4]
则中位数是 (2 + 3)/2 = 2.5
思路:计算两个数组的长度,按照依次对比大小的方式把两个数组合并成一个,按照长度求出计算中位数的是哪两个(长度和为偶数)或一个(长度和为奇数)。然后普通思路进行。。。
#include <iostream>
#include <vector> double findMedianSortedArrays(std::vector<int>& nums1, std::vector<int>& nums2) {
int len1 = nums1.size();
int len2 = nums2.size();
int a = , b = ;
int count = ;
if (((len1 + len2) % ) == )
{
int num1 = (len1 + len2) / ;
int num2 = (len1 + len2) / + ;
double *s = new double[num2];
while (count<num2)
{
if ((a<len1&&b<len2&&nums1[a]<=nums2[b]) || (a<len1&&b == len2))
{
s[count] = nums1[a];
a++;
}
else if ((a<len1&&b<len2&&nums1[a]>nums2[b]) || (b < len2&&a == len1))
{
s[count] = nums2[b];
b++;
}
else
break;
count++;
}
double temp1 = s[num2 - ];
double temp2 = s[num1 - ];
delete[] s;
return (temp1+temp2) / ;
}
else
{
int num1 = (len1 + len2) / + ;
double *s = new double[num1 + ];
while (count<num1+)
{
if ((a<len1&&b<len2&&nums1[a]<=nums2[b]) || (a<len1&&b == len2))
{
s[count] = nums1[a];
a++;
}
else if ((a<len1&&b<len2&&nums1[a]>nums2[b]) || (b < len2&&a == len1))
{
s[count] = nums2[b];
b++;
}
else
break;
count++;
}
double temp = s[num1 - ];
delete[] s;
return temp;
}
}
int main() {
std::vector<int> a = { };
std::vector<int> b = { };
double aa = findMedianSortedArrays(a, b);
std::cout << aa << std::endl;
system("pause");
return ;
}
执行用时: 72 ms, 在Median of Two Sorted Arrays的C++提交中击败了7.44% 的用户
内存消耗: 21.8 MB, 在Median of Two Sorted Arrays的C++提交中击败了0.53% 的用户
有点垃圾。。。
改进思想参考:https://blog.csdn.net/hang404/article/details/84786904
#leetcode刷题之路4-寻找两个有序数组的中位数的更多相关文章
- #leetcode刷题之路21-合并两个有序链表
		
将两个有序链表合并为一个新的有序链表并返回.新链表是通过拼接给定的两个链表的所有节点组成的. 示例:输入:1->2->4, 1->3->4输出:1->1->2-&g ...
 - LeetCode Golang  4. 寻找两个有序数组的中位数
		
4. 寻找两个有序数组的中位数 很明显我偷了懒, 没有给出正确的算法,因为官方的解法需要时间仔细看一下... func findMedianSortedArrays(nums1 []int, nums ...
 - Leetcode(4)寻找两个有序数组的中位数
		
Leetcode(4)寻找两个有序数组的中位数 [题目表述]: 给定两个大小为 m 和 n 的有序数组 nums1 和* nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O( ...
 - Java实现 LeetCode 4 寻找两个有序数组的中位数
		
寻找两个有序数组的中位数 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 n ...
 - 0004. 寻找两个有序数组的中位数(Java)
		
4. 寻找两个有序数组的中位数 https://leetcode-cn.com/problems/median-of-two-sorted-arrays/ 最简单的就是用最简单的,把两个数组分别抽出然 ...
 - leetcode刷题四<寻找两个有序数组的中位数>
		
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 nums2 ...
 - Leetcode题库——4.寻找两个有序数组的中位数
		
@author: ZZQ @software: PyCharm @file: findMedianSortedArrays.py @time: 2018/10/10 19:24 说明:给定两个大小为 ...
 - 【LeetCode】寻找两个有序数组的中位数【性质分析+二分】
		
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 nums2 ...
 - leetcode题目4.寻找两个有序数组的中位数(困难)
		
题目描述: 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 ...
 
随机推荐
- pythion的定义函数和传递实参
			
1.定义函数 例子: def greet_user(): """显示简单的问候语""" print("Hello!")g ...
 - Android开发ListView嵌套ImageView实现单选按钮
			
做Android开发两年的时间,技术稍稍有一些提升,刚好把自己实现的功能写出来,记录一下,如果能帮助到同行的其他人,我也算是做了件好事,哈哈!!废话不多说,先上个图. 先上一段代码: if (last ...
 - C#程序的编译和执行
			
1.在讲解 C# 程序的编译与执行之前,首先了解以下两个概念,以便充分理解C# 程序的运行. CLI--Common Language Infrastructure 的简称,C# 程序在Microso ...
 - 采用C/C++语言如何实现复数抽象数据类型Complex
			
记录一下! 采用C/C++语言如何实现复数抽象数据类型Complex #include <stdio.h> typedef struct Complex { double e1; // 实 ...
 - PLSQL Developer中几个功能
			
1,登录后默认自动选中My Objects 默认情况下,PLSQL Developer登录后,Brower里会选择All objects,如果你登录的用户是dba,要展开tables目录,正常情况都需 ...
 - nagios centos7 rpm打包
			
wget https://github.com/NagiosEnterprises/nagioscore/releases/download/nagios-4.3.1/nagios-4.3.1.tar ...
 - Linux添加alias简化命令
			
一.简介 linux alias 是命令的一种别称,输入 alias 可以看到像下面这样的结果: alias vi="vim" 也即,输入vi后,被自动定向到vim这个命令了.al ...
 - day6-基础 模块详解
			
1.定义: 1)模块:本质上就是一个python程序,封装成一个"模块",可以调用里面的方法,用来实现一个功能.逻辑上用来组织python代码. 2)包:本质上是一个目录(必须带有 ...
 - QQ空间那年今日 & 人人过往的今天
			
都说天下文章一大抄!就看你会抄不会抄! 过往的今天这个功能很新颖,不过最后还是被企鹅抄走了~该出手时就出手! 自从过往的今天功能低调上线后,断断续续总是有人提到这个功能,有褒有贬: 顶的认为人人让自己 ...
 - SAP成都研究院廖婧:SAP C4C社交媒体集成概述
			
曾经有朋友在知乎上向我提问,咨询在SAP成都研究院工作的体验. 当时,我的回答提到一点,SAP注重工作与生活的平衡,这也是SAP中国官网强调的一点. https://www.sap.com/china ...