给定两个大小为 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解法——寻找两个有序数组的中位数相关推荐

  1. JAVA实现寻找两个有序数组的中位数

    介绍 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(m + n) 你可以假设 nums1 和 nums2 不会同时 ...

  2. 分享一道力扣困难题~寻找两个有序数组的中位数(Java)

    目录 解题思路1 具体代码 解题思路2 具体代码 题目描述:给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2.请你找出并返回这两个正序数组的 中位数 .算法的时间复杂 ...

  3. 算法--------------------寻找两个有序数组的中位数

    题目描述 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2.请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)).你可以假设 nums1 和 num ...

  4. 20191016:(leetcode习题)寻找两个有序数组的中位数

    寻找两个有序数组的中位数 题目 大致思路 代码实现 题目 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log( ...

  5. 两个有序数组的中位数 python_Python寻找两个有序数组的中位数实例详解

    Python寻找两个有序数组的中位数 审题: 1.找出意味着这是一个查找算法题 2.算法复杂度log级别,就是提示你是二分查找 3.二分查找实现一般为递归 (1)递归包括递归体 (2)终止条件 思路: ...

  6. LeetCode4. 寻找两个有序数组的中位数

    4. 寻找两个有序数组的中位数 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假 ...

  7. (JS)寻找两个有序数组的中位数

    寻找两个有序数组的中位数 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假设 n ...

  8. Python寻找两个有序数组的中位数

    Python寻找两个有序数组的中位数 审题: 找出意味着这是一个查找算法题 算法复杂度log级别,就是提示你是二分查找 二分查找实现一般为递归 (1)递归包括递归体 (2)终止条件 思路: 定理: 有 ...

  9. 力扣寻找两个有序数组的中位数

    寻找两个有序数组的中位数 要求 给定两个大小为 m 和 n 的有序数组 nums1 和 nums2. 请你找出这两个有序数组的中位数,并且要求算法的时间复杂度为 O(log(m + n)). 你可以假 ...

最新文章

  1. HTML5新增表单验证
  2. [翻译]Triggerless design.md
  3. LocalDateTime与LocalDate之间的相互转换
  4. MariaDB通过命令行的方式导出指定数据库和还原指定数据库
  5. 常见数据结构List之LinkedList
  6. JAVA消息中间件面试题
  7. SpringBoot + MyBatis 之 Hello World
  8. 如何在 Adobe XD 中创建交互式原型?
  9. MybatisPlus自定义sql分页和分页失效问题解决
  10. Redhat使用yum install时提示This system is not registered with an entitlement server 的解决办法
  11. H3C Cloud Lab安装
  12. java宝典 pdf下载_Java面试宝典2020修订版 PDF 下载
  13. 移动电源给路由器供电
  14. 安徽师范大学898专硕复习讲义
  15. MongoDB安装、群集原理
  16. NetworkManager的命令行工具nmcli
  17. 手游代理加盟费贵不贵?
  18. 晋中市中等职业学校技能大赛
  19. Week9 作业——B - 东东学打牌
  20. 剑指offer答案 c语言,剑指offer 题目整理

热门文章

  1. matlab中reshape 函数
  2. 树莓派4的串口启用设置
  3. Kubernetes:(九)coredns(浪不动了)
  4. 浪潮服务器安装乌班图系统,傻瓜书 手把手教你在VMware中试用Ubuntu
  5. 分享一个自学前端的4年工作总结(三十而立,拒绝躺平)
  6. nsa iphone 手机天堂-软件世界 | 手机天堂-软件世界
  7. 浏览器小知识之苹果浏览器(Safari)
  8. nginx配置代理404问题
  9. Mybatis面试题(2022,持续更新,自用)
  10. linux下修改文件权限命令