当前位置:网站首页>每日一题-寻找两个正序数组的中位数-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;
}
}
边栏推荐
猜你喜欢

每日一题-两数相加-0711

网管日记:故障网络交换机快速替换方法

每日一题-删除链表的倒数第 N 个结点-0718

链表章6道easy总结(leetcode)

手把手教你搭建小程序

电子产品量产工具(4)-UI系统实现

CVPR2021 - Inception Convolution with Efficient Dilation Search

Jupyter notebook选择不同的Anaconda环境作为内核运行

Tensorflow steps on the pit notes and records various errors and solutions

HuiFer 带你读懂 BeanFactory getBean 方法
随机推荐
1004 成绩排名 (20 分)
二、自动配置之底层注解
网工必用神器:网络排查工具MTR
多边形等分
手把手教你搭建小程序
每日一题-括号生成-0721
关于存储IOPS你必须了解的概念
网管日记:故障网络交换机快速替换方法
【ts】typeScript高阶:any和unknown
基于STM32F407的WIFI通信(使用的是ESP8266模块)
[Intensive reading of the paper] R-CNN's Bounding box regression problem is detailed
栈的应用——力扣 20.有效的括号
【论文阅读-表情捕捉】High-quality Real Time Facial Capture Based on Single Camera
原型版本管理
GIS面试问题
【ts】typescript高阶:条件类型与infer
一个小时教你如何掌握ts基础
表情捕捉的指标/图像的无参考质量评价
电子产品量产工具(2)- 输入系统实现
教你如何封装功能组件和页面组件