目錄
- 題目描述
- 解題思路
- 代碼
題目描述
尋找兩個正序陣列的中位數
難度:困難
給定兩個大小分別為 m 和 n 的正序(從小到大)陣列 nums1 和 nums2,請你找出并回傳這兩個正序陣列的 中位數 ,
示例 1:
輸入:nums1 = [1,3], nums2 = [2]
輸出:2.00000
解釋:合并陣列 = [1,2,3] ,中位數 2
示例 2:
輸入:nums1 = [1,2], nums2 = [3,4]
輸出:2.50000
解釋:合并陣列 = [1,2,3,4] ,中位數 (2 + 3) / 2 = 2.5
示例 3:
輸入:nums1 = [0,0], nums2 = [0,0]
輸出:0.00000
示例 4:
輸入:nums1 = [], nums2 = [1]
輸出:1.00000
示例 5:
輸入:nums1 = [2], nums2 = []
輸出:2.00000
提示:
nums1.length == m
nums2.length == n
0 <= m <= 1000
0 <= n <= 1000
1 <= m + n <= 2000
-106 <= nums1[i], nums2[i] <= 106
解題思路
題目大意: 就是求中位數,如果陣列有奇數個那就是求中間那個數即可,如果公有偶數個,那就是中間兩個數的平均值,
解題思路:
有時候簡單的思路往往可以解決問題,我們只需要在new一個長度為兩個陣列長度之和的空陣列,然后把兩個陣列都放進去,然后sort一下,嗯沒錯直接sort就行,然后排好序后,就直接求出中間下標,判斷下陣列長度是不是偶數個,在分別處理即可
代碼
/**
* Keafmd
*
* @ClassName: FindTheMedianOfTwoPositivelyOrderedArrays
* @Description: 尋找兩個正序陣列的中位數
* @author: 牛哄哄的柯南
* @date: 2021-07-22 18:22
*/
class Solution {
public double findMedianSortedArrays(int[] nums1, int[] nums2) {
int l1 = nums1.length;
int l2 = nums2.length;
int[] num = new int[l1+l2];
int i=0,j=0;
int k=0;
double res =0;
while(i<l1){
num[k++] = nums1[i++];
}
while(j<l2){
num[k++] = nums2[j++];
}
Arrays.sort(num);
int sum_len = l1+l2;
int mid = sum_len/2;
if(sum_len%2==0){
res = (num[mid]+num[mid-1])/2.0;
}else{
res = num[mid];
}
return res;
}
}
每天進步一點點!
不進則退!
著作權宣告:
原創博主:牛哄哄的柯南
博主原文鏈接:https://keafmd.blog.csdn.net/
看完如果對你有幫助,感謝點贊支持!
如果你是電腦端,看到右下角的 “一鍵三連” 了嗎,沒錯點它[哈哈]

加油!
共同努力!
Keafmd
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/289903.html
標籤:其他
