#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 和 ...
随机推荐
- python之高阶函数filter
原文 Python内建的filter()函数用于过滤序列. 和map()类似,filter()也接收一个函数和一个序列.和map()不同的是,filter()把传入的函数依次作用于每个元素,然后根据返 ...
- rest-framework框架——APIView和序列化组件
一.快速实例 Quickstart http://www.cnblogs.com/yuanchenqi/articles/8719520.html restful协议 ---- 一切皆是资源,操作只是 ...
- javascript对象(3)
这个对象,不是那个对象,第三哦! 对象之间会存在继承,所以,来说一下他们之间存在的三种三种继承方式: 1.冒用继承 //创建了孙悟空构造函数 function Sun(change,weapon,gf ...
- 转:ITopologicalOperator Buffer调用异常的解决方法(来源网络)
/// <summary> /// 用拓扑分析求出缓冲区范围. /// 由于ArcGIS的问题,有时调用会出异常,因此需要循环调用 /// </summary> ...
- 【Linux】动态链接函数库
动静区别 1. gcc –c mylib.c –o mylib.o 2. gcc -shared -fPIC mylib.o -o libmylib.so 3. 将制作好的libmylib.so 复制 ...
- 详解Struts1.x的运行机制及命名规则
Struts1.x 调用一个action的大致流程: 1)首先前端发送 *.do的一个action请求(通过点击表单提交按钮,js 事件等): 2)web.xml 文件通过 *.do 找到 Actio ...
- python闭包&装饰器&偏函数
什么是闭包? 首先还得从基本概念说起,什么是闭包呢?来看下维基上的解释: 在计算机科学中,闭包(Closure)是词法闭包(Lexical Closure)的简称,是引用了自由变量的函数.这个被引用的 ...
- 【Leetcode】【Medium】Single Number II
Given an array of integers, every element appears three times except for one. Find that single one. ...
- 如何批量删除Redis数据库中的Key
借助 Linux 的 xargs 指令来完成 redis-cli keys "*" | xargs redis-cli del //如果redis-cli没有设置成系统变量,需要指 ...
- OO思想举例,控制翻转,依赖注入
(转自kumaws,原帖地址:http://www.cnblogs.com/kumaws/archive/2009/04/06/from_interface_to_DependencyInjectio ...