leetcode 寻找两个有序数组的中位数 median of two sorted arrays
2019-01-13 03:34
736 查看
这个题用python写真的非常短 当然这是一种比较无脑的方法 后面有认真思考的版本
在这个版本里非常简单把两个list合并再排序排序用a.sort()
奇数长度取数组长度整除2的位置 偶数取两位/2
里面的易错点:
int/int =int (达到整除效果)
float/float=float 被除数除数有一个为float即可 这个地方很关键 一开始测试没过就是因为2+3/2 应该是2.5 却出来了2
python 版本
class Solution(object): def findMedianSortedArrays(self, nums1, nums2): """ :type nums1: List[int] :type nums2: List[int] :rtype: float """ new=nums1+nums2 new.sort() long=len(new) if long%2==0 : return float((new[long/2]+new[long/2-1]))/2 else: return new[long/2]
c++ 版本
得到元素类型的方法
法一:
typeid(元素名).name()
法二:
const type_info& t1=typeid(元素名);
const char *a=t1.name;
c++数组没有append 不是python
string有append
class Solution { public: double findMedianSortedArrays(vector<int>& nums1, vector<int>& nums2) { int count=0 , flag1=0, flag2=0; int len1= nums1.size(); int len2=nums2.size(); int len=len1+len2; int medium=len/2 +1 ; int array[medium]; while (count != medium & len1!=0 & len2!=0 ) { if (nums1[flag1]<=nums2[flag2]) { array[count]=nums1[flag1]; count+=1; flag1+=1; if (flag1==len1) { int xz=medium-count; for (int num_need=0; num_need<xz;num_need++){ array[count]=(nums2[flag2+num_need]); count+=1; } break; } } else{ array[count]=nums2[flag2]; count+=1 ; flag2+=1; if( flag2==len2){ int xz2=medium -count; for (int num_need=0; num_need<xz2;num_need++){ array[count] = nums1[flag1+num_need]; count+=1; } break;} } } if (len==1){ if (len1==0){ return nums2[0];} else{ return nums1[0]; } } else{ if (len1==0){ array[medium-2]=nums2[medium-2]; array[medium-1]=nums2[medium-1]; } if (len2==0){ array[medium-2]=nums1[medium-2]; array[medium-1]=nums1[medium-1]; } } if (len%2==0){ return float((array[medium-2]+array[medium-1]))/2;} else{ return array[medium-1]; } } };
归并算法并不能达到要求的时间复杂度
标答的方法是 把两个数组都切成两半 然后比较两个数组的中位数 大的那个中位数的后面的数必然不在总数组的前一半
把被割掉后半部分的数组的前半部分再取中位数 再比较 不断重复
写不动了就不写了
再见了 老铁们 明天见
相关文章推荐
- LeetCode--4. 寻找两个有序数组的中位数(Median of Two Sorted Arrays)
- [leetcode] Median of Two Sorted Arrays 寻找两个有序数组的中位数
- [LeetCode] Median of Two Sorted Arrays 两个有序数组的中位数
- [LeetCode] Median of Two Sorted Arrays 两个有序数组的中位数
- [LeetCode] Median of Two Sorted Arrays 两个有序数组的中位数
- ~~~~(>_<)~~~~Median of Two Sorted Arrays:两个有序数组寻找中位数
- Median of Two Sorted Arrays 两个有序数组的中位数@LeetCode
- [LeetCode]Median of Two Sorted Arrays 二分查找两个有序数组的第k数(中位数)
- [LeetCode]Median of Two Sorted Arrays 二分查找两个有序数组的第k数(中位数)
- @LeetCode寻找两个有序数组的中位数--Median of Two Sorted Arrays[C++]
- Median of Two Sorted Arrays 两个有序数组的中位数@LeetCode
- Median of Two Sorted Arrays - 寻找两个有序数组的中位数(重)
- 寻找两个数组的中位数 Median of Two Sorted Arrays ***问题转化思想***
- [Leetcode #4]Median of Two Sorted Arrays 计算两个有序数组的中位数
- 两个有序数组的中位数Median of Two Sorted Arrays(很重要)
- 两个有序数组的中位数 Median of Two Sorted Arrays
- [Leetcode #4]Median of Two Sorted Arrays 计算两个有序数组的中位数
- LeetCode | Median of Two Sorted Arrays(两个数组的中位数)
- LeetCode OJ 之 Median of Two Sorted Arrays(两个有序数组的中位数)
- 【LeetCode】004 Median of Two Sorted Arrays 两个排序数组合并后的中位数