[leetcode] find median of two sorted arrays

本文提供了一种Java解决方案来寻找两个已排序数组中的中位数。通过比较两个数组元素并进行迭代,该方法能够在O(log(min(m, n)))的时间复杂度内找到中位数,其中m和n分别是两个数组的长度。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

[url]http://leetcode.com/onlinejudge#question_4[/url]


Solution: a little ugly.


public class Solution {
public double findMedianSortedArrays(int A[], int B[]) {
// Start typing your Java solution below
// DO NOT write main() function
int len1 = A.length;
int len2 = B.length;
int i = 0;
int j = 0;
int k = 0;
double v = 0;
double pre = 0;

boolean odd = (len1 + len2) % 2 == 1;
int mid = (len1 + len2) / 2 + 1;

while(i<len1 && j<len2 && k < mid){
if(A[i] < B[j]) {
v = A[i];
if(k == mid-2){
pre = A[i];
}
i++;
}
else {
v = B[j];
if(k == mid-2){
pre = B[j];
}
j++;
}
k++;
}
if(k==mid){
if(odd){
return v;
}else {
return (double)(v + pre)/2;
}
}

while(i<len1 && k < mid){
v = A[i];
if(k==mid-2) pre = A[i];
i++;
k++;
}
if(k==mid){
if(odd){
return v;
}else {
return (double)(v + pre)/2;
}
}

while(j<len2 && k<mid){

v = B[j];
if(k==mid-2) pre = B[j];
j++;
k++;
}
if(k==mid){
if(odd){
return v;
}else {
return (double)(v + pre)/2;
}
}
return v;
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值