java解法——寻找两个有序数组的中位数
给定两个大小为 m 和 n 的有序数组 nums1 和 nums2。
请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n))。
你可以假设 nums1 和 nums2 不会同时为空。
示例 1:
nums1 = [1, 3]
nums2 = [2]则中位数是 2.0
示例 2:
nums1 = [1, 2]
nums2 = [3, 4]则中位数是 (2 + 3)/2 = 2.5
思路:求中位数,所以只需将两个数组的一半之数排序即可。因为是两个已经排好序的数组,所以只需依次从头比较,较小的放入新建的数组之中即可。
import java.util.*;public class Solution {/*** * @param A int整型一维数组 * @param B int整型一维数组 * @return double浮点型*/public double findMedianSortedArrays (int[] A, int[] B) {int sum = A.length + B.length;int temp = 0;int[] arr = new int[sum];int i=0,j=0;double result;//思路:求中位数,所以只需将两个数组的一半之数排序即可。因为是两个已经排好序的数组,所以只需依次从头比较,较小的放入新建的数组之中即可。while(temp <= sum/2){//防止数组溢出if(i<A.length && j<B.length){if(A[i] < B[j]){arr[temp++] = A[i++];}else{arr[temp++] = B[j++];}}else if(i >= A.length){//A数组已经到达末尾了 A.length-1的时候 A就已经遍历完成了arr[temp++] = B[j++];}else{//数组B 遍历完成 到达末尾了 相当于j>=B.lengtharr[temp++] = A[i++];}}if(sum%2 == 0){//2个数组合并后 偶数位个长度result = ((double)(arr[sum/2] + arr[sum/2 - 1])) / 2;}else{//2个数组合并后 奇数位个长度result = (double)arr[sum/2];}return result;}
}
java解法——寻找两个有序数组的中位数相关推荐
- JAVA实现寻找两个有序数组的中位数
介绍 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(m + n) 你可以假设 nums1 和 nums2 不会同时 ...
- 分享一道力扣困难题~寻找两个有序数组的中位数(Java)
目录 解题思路1 具体代码 解题思路2 具体代码 题目描述:给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2.请你找出并返回这两个正序数组的 中位数 .算法的时间复杂 ...
- 算法--------------------寻找两个有序数组的中位数
题目描述 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2.请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)).你可以假设 nums1 和 num ...
- 20191016:(leetcode习题)寻找两个有序数组的中位数
寻找两个有序数组的中位数 题目 大致思路 代码实现 题目 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log( ...
- 两个有序数组的中位数 python_Python寻找两个有序数组的中位数实例详解
Python寻找两个有序数组的中位数 审题: 1.找出意味着这是一个查找算法题 2.算法复杂度log级别,就是提示你是二分查找 3.二分查找实现一般为递归 (1)递归包括递归体 (2)终止条件 思路: ...
- LeetCode4. 寻找两个有序数组的中位数
4. 寻找两个有序数组的中位数 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假 ...
- (JS)寻找两个有序数组的中位数
寻找两个有序数组的中位数 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 n ...
- Python寻找两个有序数组的中位数
Python寻找两个有序数组的中位数 审题: 找出意味着这是一个查找算法题 算法复杂度log级别,就是提示你是二分查找 二分查找实现一般为递归 (1)递归包括递归体 (2)终止条件 思路: 定理: 有 ...
- 力扣寻找两个有序数组的中位数
寻找两个有序数组的中位数 要求 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假 ...
最新文章
- HTML5新增表单验证
- [翻译]Triggerless design.md
- LocalDateTime与LocalDate之间的相互转换
- MariaDB通过命令行的方式导出指定数据库和还原指定数据库
- 常见数据结构List之LinkedList
- JAVA消息中间件面试题
- SpringBoot + MyBatis 之 Hello World
- 如何在 Adobe XD 中创建交互式原型?
- MybatisPlus自定义sql分页和分页失效问题解决
- Redhat使用yum install时提示This system is not registered with an entitlement server 的解决办法
- H3C Cloud Lab安装
- java宝典 pdf下载_Java面试宝典2020修订版 PDF 下载
- 移动电源给路由器供电
- 安徽师范大学898专硕复习讲义
- MongoDB安装、群集原理
- NetworkManager的命令行工具nmcli
- 手游代理加盟费贵不贵?
- 晋中市中等职业学校技能大赛
- Week9 作业——B - 东东学打牌
- 剑指offer答案 c语言,剑指offer 题目整理