leetcode:Median of Two Sorted Arrays 【Java】
2016-03-08 21:41
519 查看
一、问题描述
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)).
二、问题分析
合并两个有序数组(参考算法leetcode:Merge Sorted
Array 【Java】)后,寻找中位数。
三、算法代码
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)).
二、问题分析
合并两个有序数组(参考算法leetcode:Merge Sorted
Array 【Java】)后,寻找中位数。
三、算法代码
public class Solution { public double findMedianSortedArrays(int[] nums1, int[] nums2) { int [] mergedArray = merge(nums1, nums1.length, nums2, nums2.length); int len = mergedArray.length; double middle = 0.0; if(len % 2 == 0){ middle = ((double)mergedArray[(len - 1) / 2] + (double)mergedArray[(len - 1) / 2 + 1]) / 2; }else{ middle = (double)mergedArray[(len - 1) / 2]; } return middle; } //合并两个有序数组 public int[] merge(int[] nums1, int m, int[] nums2, int n) { int a_index = m - 1; int b_index = n - 1; int a_cur = m + n - 1; int [] result = new int[m + n]; while(a_index >= 0 && b_index >= 0){ if(nums1[a_index] >= nums2[b_index]){ result[a_cur] = nums1[a_index]; a_cur--; a_index--; }else{ result[a_cur] = nums2[b_index]; a_cur--; b_index--; } } while(b_index >= 0){ result[a_cur] = nums2[b_index]; a_cur--; b_index--; } while(a_index >= 0){ result[a_cur] = nums1[a_index]; a_cur--; a_index--; } return result; } }
相关文章推荐
- Java内存管理
- Java内存管理
- Java内存管理
- Java内存管理
- java实现二叉树创建和遍历
- java中的字符串简介,字符串的优化以及如何高效率的使用字符串
- MyBatis分页的拓展--合并高级查询
- AAA【Dubbo实战】 Dubbo+Zookeeper+Spring整合应用篇-Dubbo基于Zookeeper实现分布式服务(二)
- 【Java SE】————数据类型及其转换
- java——MD5加密
- 在三大框架里运用lucene和ik分词是报java.lang.reflect.InvocationTargetException异常的解决方法
- Java单例模式
- 入住CSDN
- eclipse安装ADT后不显示插件的小问题
- leetcode:Ugly Number II 【Java】
- Java 包装类
- Java JNI Demo
- Java设计模式之简单工厂模式
- Java并发编程:volatile关键字解析
- Spring MVC 中Ajax返回字符串