当前位置:网站首页>每日一题-寻找两个正序数组的中位数-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;
}
}
边栏推荐
猜你喜欢
随机推荐
每日一题-下一个排列-0723
关于存储IOPS你必须了解的概念
C语言入门笔记 —— 函数(1)
[Intensive reading of the paper] R-CNN's Bounding box regression problem is detailed
六、请求处理—获取请求参数系列注解是怎样工作的?
(C语言)计算结构体大小——结构体内存对齐
【论文阅读-表情捕捉】High-quality Real Time Facial Capture Based on Single Camera
十一、拦截器运行原理
tensorflow的session和内存溢出
四、Web场景之静态资源配置原理
【Multisim仿真】直流稳压电源设计报告
单片机按键开发库-支持连击、长按等操作
深度学习系列(二)优化器 (Optimization)
LeetCode刷题之第24题
【UiPath2022+C#】UiPath If条件语句
九、响应处理——内容协商底层原理
HuiFer 带你读懂 BeanFactory getBean 方法
GIS面试问题
基于STM32F407的WIFI通信(使用的是ESP8266模块)
PoE视频监控解决方案









