当前位置:网站首页>每日一题-寻找两个正序数组的中位数-0713
每日一题-寻找两个正序数组的中位数-0713
2022-08-05 05:17:00 【菜鸡程序媛】
题目:
给定两个大小分别为 m 和 n 的正序(从小到大)数组 nums1 和 nums2。请你找出并返回这两个正序数组的 中位数 。
算法的时间复杂度应该为 O(log (m+n)) 。
这个题,目前还不是很理解,为了速度,先背了…
class Solution {
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
if(nums1.length > nums2.length)
return findMedianSortedArrays(nums2, nums1);
int m = nums1.length;
int n = nums2.length;
int left = 0, right = m;
int mid1 = 0, mid2 = 0;
while(left <= right){
int i = (left + right) / 2;
int j = (m + n + 1) / 2 - i;
int nums_im1 = i == 0 ? Integer.MIN_VALUE : nums1[i - 1];
int nums_i = i == m ? Integer.MAX_VALUE : nums1[i];
int nums_jm1 = j == 0 ? Integer.MIN_VALUE : nums2[j - 1];
int nums_j = j == n ? Integer.MAX_VALUE : nums2[j];
if(nums_im1 < nums_j){
mid1 = Math.max(nums_im1, nums_jm1);
mid2 = Math.min(nums_i, nums_j);
left = left + 1;
}else{
right = right - 1;
}
}
return (m + n) % 2 == 0 ? (mid1 + mid2) / 2.0 : mid1;
}
}
边栏推荐
猜你喜欢
随机推荐
物联网-广域网技术之NB-IoT
如何组织一场安全、可靠、高效的网络实战攻防演习?
LeetCode刷题之第1024题
【UiPath2022+C#】UiPath Switch
leetCode刷题之第31题
四、Web场景之静态资源配置原理
MySQL主从复制—有手就能学会的MySQL集群搭建教程
链表章6道easy总结(leetcode)
LeetCode刷题之第416题
PoE视频监控解决方案
三、自动配置源码分析
【ts】typescript高阶:模版字面量类型
MaskDistill - Semantic segmentation without labeled data
六步搞定子网划分
网络信息安全运营方法论 (中)
Redis设计与实现(第二部分):单机数据库的实现
(oj)原地移除数组中所有的元素val、删除排序数组中的重复项、合并两个有序数组
Comparison and summary of Tensorflow2 and Pytorch in terms of basic operations of tensor Tensor
【22李宏毅机器学习】课程大纲概述
【UiPath2022+C#】UiPath 练习和解决方案-变量、数据类型和控制流程