Median of Two Sorted Arrays
来源:互联网 发布:java list json 转换 编辑:程序博客网 时间:2024/05/17 05:51
题目:
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)).
主要思想:
在两个数组中查找第k个元素时(k从1开始),若nums1[k/2-1]>nums2[k/2-1],这说明在数组nums2中,前k/2个元素(数组从nums2[0]开始)中肯定不包含第k个元素,将这前k/2个元素剔除,在num1和剩余的nums2元素中查找第k-k/2个元素.
代码:
double find_the_Kth_element(int* nums1, int nums1Size, int* nums2, int nums2Size,int k){// k从1开始,而不是0开始 if(nums1Size<nums2Size)// 默认是数组1的长度大于数组2的 return find_the_Kth_element(nums2, nums2Size, nums1,nums1Size,k); if(nums2Size==0) return nums1[k-1]; if(k==1) return nums1[0]<nums2[0]?nums1[0]:nums2[0]; // min() int partitionPosition2=k/2<nums2Size?k/2:nums2Size;// min() int partitionPosition1=k-partitionPosition2; //这一步很巧妙 if(nums1[partitionPosition1-1]>nums2[partitionPosition2-1]) return find_the_Kth_element(nums1, nums1Size, nums2+partitionPosition2,nums2Size-partitionPosition2,k-partitionPosition2); else if( nums1[partitionPosition1-1]<nums2[partitionPosition2-1]) return find_the_Kth_element(nums1+partitionPosition1, nums1Size- partitionPosition1, nums2,nums2Size,k-partitionPosition1); else return nums1[partitionPosition1-1];}double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size) { int total=(nums1Size+nums2Size); if(total&0X1) return find_the_Kth_element(nums1, nums1Size, nums2, nums2Size,total/2+1); else return (find_the_Kth_element(nums1, nums1Size, nums2, nums2Size,total/2)+ find_the_Kth_element(nums1, nums1Size, nums2, nums2Size,total/2+1))/2;}
0 0
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of two sorted arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- median-of-two-sorted-arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- Median of Two Sorted Arrays
- apt-get updat执行出现错误
- Android布局中实现圆角边框
- 关于ios的autoLayout的一些简单介绍以及使用方法
- Android - EditView属性
- javascript实现的中国象棋单机双人
- Median of Two Sorted Arrays
- Genero “HelloWorld"
- Linux使用
- Linux如何查看进程、杀死进程、启动进程等常用命令
- Android Activity启动过程全解析
- MediaScanner扫描文件和文件目录
- android应用中打开app应用市场
- 阿拉伯语、波斯语等RTL语言下部分控件位置不对
- rand()和srand((unsigned)time(NULL))产生的随机数有什么不同http://blog.csdn.net/jinjingwen/article/details/6205537