[刷题]Median of two Sorted Arrays
来源:互联网 发布:小米k歌软件 编辑:程序博客网 时间:2024/05/21 09:57
[LintCode]Median of two Sorted Arrays
class Solution { /** * @param A: An integer array. * @param B: An integer array. * @return: a double whose format is *.5 or *.0 */ public double findMedianSortedArrays(int[] A, int[] B) { // 2015-4-21 if (A == null || B == null) { return 0; } int len = A.length + B.length; if (len == 0) { return 0; } if (len % 2 == 0) { // 偶数 return (findKth(A, B, 0, 0, len / 2) + findKth(A, B, 0, 0, len / 2 + 1)) / 2.0; } else { // 奇数 return findKth(A, B, 0, 0, len / 2 + 1); } } // 在两个数组中找到第k大的数 private int findKth (int[] A, int[] B, int indexA, int indexB, int k) { int lenA = A.length; int lenB = B.length; // 结束1:A中元素已全部被筛选掉 if (indexA == lenA) { return B[indexB + k - 1]; } // 结束2:B中元素已全部被筛选掉 if (indexB == lenB) { return A[indexA + k - 1]; } // 结束3:无论k是奇是偶,最后一定为1 if (k == 1) { return Math.min(A[indexA], B[indexB]); } int mid = k / 2; // 序号为index + k / 2 - 1的元素 int keyA = indexA + mid - 1 >= lenA ? Integer.MAX_VALUE : A[indexA + mid - 1]; int keyB = indexB + mid - 1 >= lenB ? Integer.MAX_VALUE : B[indexB + mid - 1]; // 每次筛掉k / 2个元素 if (keyA < keyB) { // 从A筛掉k / 2 return findKth(A, B, indexA + mid, indexB, k - mid); } else { // 从B筛掉k / 2 return findKth(A, B, indexA, indexB + mid, k - mid); } }}
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
- 黑马程序员Java----Iterater
- MAME4droid imame4all 项目编译
- 小波变换教程(八)
- SpringMVC日期类型转换问题三大处理方法归纳
- vim 的使用
- [刷题]Median of two Sorted Arrays
- 小波变换教程(九)
- Linux 网络编程—— libnet 使用指南
- 第七周项目二 VC++6.0项目实践
- 小波变换教程(十)
- 第一次冒泡
- Leetcode202-Happy Number
- Android--广播的研究
- 基于LinkedHashMap实现LRU缓存调度算法原理