【LeetCode 4】寻找两个有序数组的中位数
【题解】
假设在两个有序的序列中找第k小的数字。 【代码】 寻找两个有序数组的中位数 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 n ... 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 nums2 ... 题目链接:https://leetcode-cn.com/problems/median-of-two-sorted-arrays/ 题目描述: 给定两个大小为 m 和 n 的有序数组 nums1 和 ... 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 nums2 ... 小知识 INT_MIN在标准头文件limits.h中定义. #define INT_MAX 2147483647#define INT_MIN (-INT_MAX - 1) 题解思路 其实是类似的二分 ... 最优解O(log(min(m,n))) /** 之前用合并有序数组的思想做了O((m+n+1)/2),现在试一试O(log(min(m,n))) 基本思路为:通过二分查找较小的数组得到对应的中位数(假 ... 4. 寻找两个有序数组的中位数 很明显我偷了懒, 没有给出正确的算法,因为官方的解法需要时间仔细看一下... func findMedianSortedArrays(nums1 []int, nums ... Leetcode(4)寻找两个有序数组的中位数 [题目表述]: 给定两个大小为 m 和 n 的有序数组 nums1 和* nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O( ... 4. 寻找两个有序数组的中位数 https://leetcode-cn.com/problems/median-of-two-sorted-arrays/ 最简单的就是用最简单的,把两个数组分别抽出然 ... 题目描述: 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 nums1 和 ... 简单的存储 create or replace procedure sayhelloworld as begin dbms_output.put_line('Hello World'); end; 一.创建Qt gui应用对应的源码: 点击(此处)折叠或打开 //mylineedit.h #ifndef MYLINEEDIT_H #define MYLINEEDIT_H #include < ... 一,概述 ScrollController可以用来控制可滚动widget的滚动位置 二,ScrollController 构造函数 ScrollController({ double initialS ... 我是看了这样的一个视频:http://www.56.com/u83/v_NTk3Mzc1NTI.html 然后在准备针对TLD视觉跟踪算法来个小的总结. 以下博文转自:http://blog.csdn ... Web集群是由多个同时运行同一个web应用的服务器组成,在外界看来就像一个服务器一样,这多台服务器共同来为客户提供更高性能的服务.集群更标准的定义是:一组相互独立的服务器在网络中表现为单一的系统,并以 ... 题目:https://www.acwing.com/problem/content/236/ 题意:给你一个方程,可以有k个不选,要求最优 思路:看了一下这个方程就知道是01分数规划的模板题,它可以选 ... 容器与 host 共享数据 我们有两种类型的 data volume,它们均可实现在容器与 host 之间共享数据,但方式有所区别. 对于 bind mount 是非常明确的:直接将要共享的目录 mo ... php开发面试题---Redis和Memcache区别,优缺点对比 一.总结 一句话总结: Redis相当于Memcache的扩展,增加比如持久化.多种数据结构.集群分布式功能 反思的回顾非常有用,因 ... 1.先在命令行工具中输入 xinput list 找到AT Translated Set 2 keyboard,记住后面的ID,如我的ID为21. 输入命令,设置值为0 xinput 然后笔记本键盘就 ... Ground Defense 题目描述 You are a denizen of Linetopia, whose n major cities happen to be equally spaced ...
那么我们先定位第一个序列中的第k/2个数字(不足则取最边上的那个数字)记下标为i1
然后定位第二个序列中的第k/2个数字(同样不足则取最边上的那个数字)记下标为i2
如果a[i1]class Solution {
public:
int n,m;
double findkth(vector<int> &nums1,vector<int> &nums2,int l1,int r1,int l2,int r2,int k){
if (l1>r1) return nums2[l2+k-1];
if (l2>r2) return nums1[l1+k-1];
if (k==1) return min(nums1[l1],nums2[l2]);
int temp = k/2;
int i1 = l1+temp-1;
int i2 = l2+temp-1;
if (i1>r1) i1 = r1;
if (i2>r2) i2 = r2;
if (nums1[i1]<nums2[i2]){
//把l1..i1全删掉
return findkth(nums1,nums2,i1+1,r1,l2,r2,k-(i1-l1+1));
}else{
//把l2..i2全删掉
return findkth(nums1,nums2,l1,r1,i2+1,r2,k-(i2-l2+1));
}
}
double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) {
n = nums1.size();m = nums2.size();
if ((n+m)%2==1){
return findkth(nums1,nums2,0,n-1,0,m-1,(n+m+1)/2);
}else{
double temp = findkth(nums1,nums2,0,n-1,0,m-1,(n+m)/2);
temp+=findkth(nums1,nums2,0,n-1,0,m-1,(n+m)/2+1);
temp/=2;
return temp;
}
}
};
【LeetCode 4】寻找两个有序数组的中位数的更多相关文章
随机推荐