剑指offer(中位数-LeetCode4)
来源:互联网 发布:电钢琴选购知乎 编辑:程序博客网 时间:2024/06/03 16:34
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
求中位数,给了两个例子。总结来看就是总数是偶数还是奇数。
奇数:(m+n)/2求得中间数,它是第(m+n)/2+1个数。这个值在我们利用归并思想解题时使用。
偶数:(m+n)/2、(m+n)/2+1。这两个数也就是第(m+n)/2、(m+n)/2+1个数。
利用归并思想查找到第k个数,按照运算规则即可。
double findK(vector<int>&a,int lena,vector<int>&b,int lenb,int k) { int i=0,j=0; for(;i<lena&&j<lenb;) { k--; if(a[i]<b[j]) { if(k==0) return a[i]; i++; } else if(k==0) return b[j]; else j++; } return i>=lena?b[j+k-1]:a[i+k-1]; } double findMedianSortedArrays(vector<int>&nums1, vector<int>&nums2) { int m=nums1.size(),n=nums2.size(); return ((m+n)&1)?findK(nums1,m,nums2,n,(m+n+1)>>1): ((findK(nums1,m,nums2,n,(m+n)>>1)+findK(nums1,m,nums2,n,((m+n)>>1)+1))*0.5); }本来没什么说的,可昨天晚上看的题目,今天来做的。我有点记答案的嫌疑。表现在写归并的时候,貌似为了做题而去做题。这样没有效果,不如不做。第二个问题是在偶数计算的时候,那么多括号要加,为此浪费了时间。关键debug的能力没跟上,归并返回值那里居然写的是lena<=0。这个不能忍,压根没理解,写毛代码!总结:
1.真的理解才去写代码。
2.柳暗花明是需要扫描定位错误,而不是困在一个死胡同里。
0 0
- 剑指offer(中位数-LeetCode4)
- 剑指offer--数据流中的中位数
- 《剑指offer》数据流中的中位数
- 剑指offer:数据流中的中位数
- 剑指offer-数据流中的中位数
- 剑指offer 数据流中的中位数
- 《剑指offer》数据流中的中位数
- 剑指Offer:数据流中的中位数
- 剑指offer-数据流中的中位数
- 剑指offer 数据流中的中位数
- 【leetcode4】用分治算法计算中位数问题
- 剑指offer 64-数据流中的中位数
- 剑指offer—数据流中的中位数
- 剑指offer(六十三)之数据流中的中位数
- 剑指offer——数据流中的中位数
- 《剑指offer》:[64]数据流中的中位数
- 剑指offer(60)-数据流中的中位数
- 剑指Offer--064-数据流中的中位数
- 数组中重复的数字
- hunnuoj10163—合并果子
- 黄阶低级 - 《 Java 核心》- 3.1 第一个java程序 - 修改0次
- Input Events
- Linux下逻辑地址-线性地址-物理地址图解
- 剑指offer(中位数-LeetCode4)
- JNI开发极简教程
- BZOJ4676: Xor-Mul棋盘
- webview部分内容偶尔加载不出来,html5在webview渲染问题
- 关于PADS LAYOUT 画元器件封装
- 写的第一篇博客
- 创建不同分辨率下的dimens工具类
- HR诚心建议:简历上犯这些错,没机会!
- 推荐算法有哪些