No.60 - LeetCode4 - 两个排序数组找第K位数 - 很难
发布日期:2021-07-28 02:54:29
浏览次数:15
分类:技术文章
本文共 910 字,大约阅读时间需要 3 分钟。
getKth函数是个模版,值得珍藏
class Solution {public: int getKth(int A[],int a,int B[],int b,int k){ if(a > b) return getKth(B,b,A,a,k); // 始终保持A比B短,保证a先为0 if(a==0) return B[k-1]; // 返回b的第k个 if(k==1) return min(A[0],B[0]); // 返回上中位数 int amid = min(a,k/2), bmid = min(b,k/2); if(A[amid-1] < B[amid-1]) return getKth(A+amid,a-amid,B,b,k-amid); else return getKth(A,a,B+bmid,b-bmid,k-bmid); } double findMedianSortedArrays(vector & nums1, vector & nums2) { int N = nums1.size(); int M = nums2.size(); int L = (N + M + 1)>>1; // 上中位数第L个 int R = (N + M + 2)>>1; // 下中位数第R个 // 保证没有空指针 if(N == 0 && M == 0) return 0; if(N == 0) return (nums2[L-1]+nums2[R-1])/2.0; if(M == 0) return (nums1[L-1]+nums1[R-1])/2.0; return (getKth(&nums1[0],N,&nums2[0],M,L)+getKth(&nums1[0],N,&nums2[0],M,R))/2.0; }};
转载地址:https://blog.csdn.net/ShellDawn/article/details/99618614 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
做的很好,不错不错
[***.243.131.199]2024年04月15日 18时39分04秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
弹框没反应使用Looper解决_the caller should invoke Looper.prepare() and Looper.loop()---Android原生开发工作笔记239
2019-04-26
Command line is too long. Shorten command line for Application---微服务升级_SpringCloud Alibaba工作笔记0067
2019-04-26
C++_类和对象_对象特性_初始化列表---C++语言工作笔记045
2019-04-26
C++_类和对象_对象特性_静态成员函数---C++语言工作笔记047
2019-04-26
kivy制作安卓APP--简单音乐播放器
2019-04-26
十年(程序员改编)
2019-04-26
c++排序算法个人总结
2019-04-26
看完你就知道的乐观锁和悲观锁
2019-04-26
Docker入门
2019-04-26
Spring Aop 扫盲
2019-04-26
看完这篇操作系统,和面试官扯皮就没问题了
2021-06-29
安卓压缩/解压缩工具
2021-06-29
安卓使用GridView实现网格视图
2021-06-29
安卓性能监控(APM)之启动时间监控
2021-06-29
安卓性能监控(APM)之内存占用监控
2021-06-29