天天看點

尋找兩個證序數組的中位數java_兩個有序數組的中位數(Java)

LeetCode4:

給定兩個大小為 m 和 n 的有序數組 nums1 和 nums2。

你可以假設 nums1 和 nums2 不會同時為空。

示例 1:

nums1 = [1, 3]

nums2 = [2]

則中位數是 2.0

示例 2:

nums1 = [1, 2]

nums2 = [3, 4]

則中位數是 (2 + 3)/2 = 2.5

解法一:

将兩個數組合并後找中位數。

class Solution {

public double findMedianSortedArrays(int[] nums1, int[] nums2) {

int len1 = nums1.length - 1;

int len2 = nums2.length - 1;

int temp[]= new int[len1 + len2 + 2];

int k = len1 + len2 + 1;

double res = 0;

while(len1 >= 0 && len2 >= 0){

if(nums1[len1] > nums2[len2]){

temp[k] = nums1[len1];

k--;

len1--;

}else{

temp[k] = nums2[len2];

k--;

len2--;

}

}

if(len1 < 0){

while(len2 >= 0){

temp[k] = nums2[len2];

k--;

len2--;

}

}else{

while(len1 >= 0){

temp[k] = nums1[len1];

k--;

len1--;

}

}

int len = temp.length;

if(len % 2 != 0){

res = temp[(len - 1) / 2];

}else{

res = (temp[len / 2] + temp[(len / 2) - 1])/2.0;

}

return res;

}

}

解法二:

标簽:Java,temp,int,中位數,len2,len1,數組,nums1,nums2

來源: https://www.cnblogs.com/smilexuezi/p/11630159.html