【LeetCode-面试算法经典-Java实现】【004-Median of Two Sorted Arrays(两个排序数组的中位数)】
2015-07-17 06:39
1146 查看
【004-Median of Two Sorted Arrays(两个排序数组的中位数)】
原题
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)).题目大意
两个排序数组,找这两个排序数组的中位数,时间复杂度为O(log(m+n))解题思路
采用类二分查找算法代码实现
public class Solution { /** * 004-Median of Two Sorted Arrays(两个排序数组的中位数) * * @param nums1 * @param nums2 * @return */ public double findMedianSortedArrays(int[] nums1, int[] nums2) { if (nums1 == null) { nums1 = new int[0]; } if (nums2 == null) { nums2 = new int[0]; } int len1 = nums1.length; int len2 = nums2.length; if (len1 < len2) { // 确保第一个数组比第二个数组长度大 return findMedianSortedArrays(nums2, nums1); } // 如果长度小的数组长度为0,就返回前一个数组的中位数 if (len2 == 0) { return (nums1[(len1 - 1) / 2] + nums1[len1 / 2]) / 2.0; } int lo = 0; int hi = len2 * 2; int mid1; int mid2; double l1; double l2; double r1; double r2; while (lo <= hi) { mid2 = (lo + hi) / 2; mid1 = len1 + len2 - mid2; l1 = (mid1 == 0) ? Integer.MIN_VALUE : nums1[(mid1 - 1) / 2]; l2 = (mid2 == 0) ? Integer.MIN_VALUE : nums2[(mid2 - 1) / 2]; r1 = (mid1 == len1 * 2) ? Integer.MAX_VALUE : nums1[mid1 / 2]; r2 = (mid2 == len2 * 2) ? Integer.MAX_VALUE : nums2[mid2 / 2]; if (l1 > r2) { lo = mid2 + 1; } else if (l2 > r1) { hi = mid2 - 1; } else { return (Math.max(l1, l2) + Math.min(r1, r2)) / 2; } } return -1; } }
评测结果
点击图片,鼠标不释放,拖动一段位置,释放后在新的窗口中查看完整图片。特别说明
欢迎转载,转载请注明出处【/article/1343458.html】
相关文章推荐
- 【LeetCode-面试算法经典-Java实现】【003-Longest Substring Without Repeating Characters(最长非重复子字符串)】
- 黑马程序员-IOS学习笔记 Foundation框架下 NSArray的方法 NSMutableArray的一些方法
- 黑马程序员-IOS学习笔记 Foundation框架下 NSArray的特点和常见方法
- 黑马程序员-IOS学习笔记 Foundation框架下 NSString的常见方法
- 黑马程序员-IOS学习笔记 OC @class的使用 解决循环引入
- 黑马程序员-IOS学习笔记 OC 内存管理
- 黑马程序员-IOS学习笔记 OC 关于匿名类相关概念
- 黑马程序员-IOS学习笔记 OC 关于对象方法类方法的一些概念
- 黑马程序员-IOS学习笔记 OC创建对象时 系统做了些什么
- 想成为优秀的程序员,必须要做到这10条法则
- 找到最完美Web开发程序员的5个技巧
- 沟通管理技巧漫谈
- 程序员的2015年9个计划
- 扣丁学堂开课了
- 说一下你眼中的Android的优点和不足之处(面试华为的人有被问过)!!!
- android--面试题总结加强再加强版(四)
- android--面试题总结加强再加强版(三)
- 说一下你眼中的Android的优点和不足之处(面试华为的人有被问过)!!!
- android--面试题总结加强再加强版(二)
- android--面试题总结加强再加强版(一)