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