当前位置:网站首页>每日一题-寻找两个正序数组的中位数-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;
}
}
边栏推荐
猜你喜欢
随机推荐
【shell编程】第三章:函数
【UiPath2022+C#】UiPath数据类型
LeetCode刷题之第24题
AIDL detailed explanation
每日一题-DFS
栈区中越界可能造成的死循环可能
CAN、CAN FD
Facial Motion Capture 调研
SharedPreferences and SQlite database
MaskDistill - Semantic segmentation without labeled data
【UiPath2022+C#】UiPath 练习-数据操作
网管日记:故障网络交换机快速替换方法
LeetCode刷题之第416题
《基于机器视觉的输电线路交叉点在线测量方法及技术方案》论文笔记
【UiPath2022+C#】UiPath If条件语句
2021电赛资源及经验总结
电子产品量产工具(1)- 显示系统实现
dataframe 常用操作
【UiPath2022+C#】UiPath控制流程概述
C语言查看大小端(纯代码)