4. Median of Two Sorted Arrays
来源:互联网 发布:云南特色饰品淘宝 编辑:程序博客网 时间:2024/06/04 19:26
题目
There are two sorted arrays nums1 and nums2 of size m and n respectively.
Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).
Example 1:
nums1 = [1, 3]nums2 = [2]The median is 2.0
Example 2:
nums1 = [1, 2]nums2 = [3, 4]The median is (2 + 3)/2 = 2.5分析
找到两个有序数组的中位数,利用寻找两个有序数组中的第k个数和二分思想进行查找,每次比较可以抛弃一半长度的数组。
class Solution {public: double find(vector<int>& nums1, vector<int>& nums2,int nums1_beg,int nums1_end,int nums2_beg,int nums2_end,int k){//寻找两个排序数组的第k个数 int nums1_mid=(nums1_beg+nums1_end)/2;//先计算得到各自的中间位置 int nums2_mid=(nums2_beg+nums2_end)/2; if(nums1_beg>nums1_end)//如果nums1遍历完,返回k在nums2中的下标位置 return nums2[nums2_beg+k-1]; if(nums2_beg>nums2_end)//反之返回在nums1中的下标位置 return nums1[nums1_beg+k-1]; if(nums1[nums1_mid]<=nums2[bmid]){//如果nums1的中间元素小于nums2的中间元素,根据k与二者前半部分元素个数进行判断 if(k<=(nums1_mid-nums1_beg)+(nums2_mid-nums2_beg)+1){//k小于二者前半部分元素,则抛弃nums2的后半部分,继续找k的位置 return find(nums1,nums2,nums1_beg,nums1_end,nums2_beg,nums2_mid-1,k); } else{//如果大于二者前半部分的元素个数,则抛弃nums1的前半部分,并令k减去这部分的长度,继续找k的位置 return find(nums1,nums2,nums1_mid+1,nums1_end,nums2_beg,nums2_end,k-(nums1_mid-nums1_beg)-1); } } else{ if(k<=(nums2_mid-nums2_beg)+(nums1_mid-nums1_beg)+1){ return find(nums1,nums2,nums1_beg,nums1_mid-1,nums2_beg,nums2_end,k); } else{ return find(nums1,nums2,nums1_beg,nums1_end,nums2_mid+1,nums2_end,k-(nums2_mid-nums2_beg)-1); } } } double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { int n=nums1.size(),m=nums2.size(); int k=(m+n+1)/2;//计算得出中位数是序列中的第k个数(从1开始算) if((m+n)%2==0){//如果序列之和为偶数,则是第k个数和第k+1个数的平均数 double l=find(nums1,nums2,0,n-1,0,m-1,k); double r=find(nums1,nums2,0,n-1,0,m-1,k+1); return (l+r)/2; } return find(nums1,nums2,0,n-1,0,m-1,k); }};
详细分析参考如下:
在两个有序的数组中找第N个数,二分查找 O(lgm+lgn)级
Share my O(log(min(m,n)) solution with explanation
阅读全文
0 0
- [LeetCode]4.Median of Two Sorted Arrays
- LeetCode 4. Median of Two Sorted Arrays
- LeetCode --- 4. Median of Two Sorted Arrays
- [Leetcode] 4. Median of Two Sorted Arrays
- 4.Median of Two Sorted Arrays
- [LeetCode]4.Median of Two Sorted Arrays
- 4. Median of Two Sorted Arrays
- 4.Median of Two Sorted Arrays
- 4. Median of Two Sorted Arrays
- 4. Median of Two Sorted Arrays
- 【leetcode】4. Median of Two Sorted Arrays
- Leetcode-4.Median of Two Sorted Arrays
- 4. Median of Two Sorted Arrays
- 4. Median of Two Sorted Arrays
- LeetCode-4.Median of Two Sorted Arrays
- leetcoode 4. Median of Two Sorted Arrays
- Leetcode 4. Median of Two Sorted Arrays
- leetcode 4. Median of Two Sorted Arrays
- 背包问题--贪心算法C#Demo解析
- Spark2.x学习笔记:10、简易电影受众系统
- 在百度上找的,eclipse上安装tomcat
- labelImg windows10 安装
- hive内置函数
- 4. Median of Two Sorted Arrays
- 杭电1048题解
- 更改pip源至国内镜像,显著提升下载速度
- ucos-iii学习之就绪列表以及添加任务到就绪队列
- 一切问题都可以是最优化
- 类的特性
- Collections 管理同步容器 和 只读容器
- 画第一块PCB遇到的坑
- 你的电脑又卡了么?别着急,有固态硬盘旗舰店推荐从此秒开机