Median of Two Sorted Arrays
来源:互联网 发布:华威医药 知乎 编辑:程序博客网 时间:2024/05/22 15:58
题目(Median of Two Sorted Arrays)-hard
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)).
C语言解答
double findMedianSortedArrays(int* nums1, int nums1Size, int* nums2, int nums2Size) { int* nums = (int*)malloc(sizeof(int)*(nums1Size+nums2Size)); int i,j; int flag1 = 0; int flag2 = 0; if(nums1Size==0 && nums2Size==0){ return 0; } if(nums1Size==0 && nums2Size!=0){ if(nums2Size%2 == 0){ return (nums2[nums2Size/2-1]+nums2[nums2Size/2])/2.0; }else{ return nums2[nums2Size/2]; } } if(nums2Size==0 && nums1Size!=0){ if(nums1Size%2 == 0){ return (nums1[nums1Size/2-1]+nums1[nums1Size/2])/2.0; }else{ return nums1[nums1Size/2]; } } if(nums1Size==1 && nums2Size==1){ return (nums1[0]+nums2[0])/2.0; } if(nums1Size>=1 && nums2Size>=1){ if(nums1[0]<=nums1[nums1Size-1]){ flag1 = 0; }else{ flag1 = 1; } if(nums2[0]<=nums2[nums2Size-1]){ flag2 = 0; }else{ flag2 = 1; } if(flag1 == flag2){ for(i = 0, j = 0; i < nums1Size && j < nums2Size;){ if(nums1[i]<=nums2[j]){ nums[i+j] = nums1[i]; i++; }else{ nums[i+j] = nums2[j]; j++; } } if(i<nums1Size){ for(; i< nums1Size; i++){ nums[i+j] = nums1[i]; } } if(j<nums2Size){ for(; j< nums2Size; j++){ nums[i+j] = nums2[j]; } } } if(flag1!=flag2){ for(i = 0, j = nums2Size - 1; i < nums1Size&&j >= 0;){ if(nums1[i]<=nums2[j]){ nums[i+nums2Size-1-j] = nums1[i]; i++; }else{ nums[i+nums2Size-1-j] = nums2[j]; j--; } } if(i < nums1Size){ for(; i< nums1Size; i++){ nums[i+nums2Size-1-j] = nums1[i]; } } if(j < nums2Size){ for(; j >= 0; j--){ nums[i+nums2Size-1-j] = nums2[j]; } } } if((nums1Size+nums2Size)%2==0){ return (nums[(nums1Size+nums2Size)/2-1]+nums[(nums1Size+nums2Size)/2])/2.0; }else{ return nums[(nums1Size+nums2Size)/2]; } }}
收获
1. 首先理解题意:给定两个已经排序完成的int数组,然后将两个数组合并,找到中间值,而且时间复杂度为O(log(m+n)).2. 很明显,题目的核心代码必须利用到两个int数组是sorted,按照一定的顺序进行合并即可;然后要注意的就是一些特定情况出现时的处理,比如某个数组为空,某个数组的值相等;
3. 作为leetcode题目中hard级别的题目来看,这个题目要求的并不是需要掌握多么复杂的数据结构以及算法基础,考验的是清晰的逻辑思考能力。
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
- C++文件读写详解(ofstream,ifstream,fstream)
- 再次深入理解IRP
- IOS开发ARC forbids explicit message send of 'autorelease'错误解决办法
- plsql自动补全
- ab压力测试
- Median of Two Sorted Arrays
- jQuery.extend 函数详解
- Leetcode#2.Add Two Numbers
- WPF经典编程模式-MVVM示例讲解
- java判断字符串是否为空的方法总结
- linux 内存管理逻辑地址,物理地址以及虚拟地址
- 比特币开发
- MYSQL 缓存设置 提高MYSQL查询性能
- okHttp框架的介绍 和关于https的自定义签名证书的问题