題目
給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o(log(m + n))。
你可以假設 nums1 和 nums2 不會同時為空。
示例 1:nums1 = [1, 3]
nums2 = [2]
則中位數是 2.0
示例 2:
nums1 = [1, 2]
nums2 = [3, 4]
則中位數是 (2 + 3)/2 = 2.5
個人題解
根據上述合併兩個陣列即可,時間複雜度為o(m + n)
接下來直接計算總體長度的除數和餘數即可。
餘數》0
:長度為奇數,直接取合併後陣列的一半位置資料即可。
餘數==0
:長度為偶數,直接取合併後(陣列的一半位置資料 + (一半 - 1)的位置資料) / 2
即可。
**如下
class
solution
else
if(nums2.length ==0)
else
else
// 把剩下的資料全部填充到res中
}else
if(i < nums1.length)
else
if(j < nums2.length)}}
// 計算中位數
int div_num = len /2;
// 計算餘數
int mod_num = len %2;
// 根據餘數不同,返回中位數
if(mod_num >0)
else
}}
力扣第4題 尋找兩個正序陣列的中位數
給定兩個大小為 m 和 n 的正序 從小到大 陣列 nums1 和 nums2。請你找出並返回這兩個正序陣列的中位數。高階 你能設計乙個時間複雜度為 o log m n 的演算法解決此問題嗎?示例 1 輸入 nums1 1,3 nums2 2 輸出 2.00000 解釋 合併陣列 1,2,3 中位數...
力扣 題目4 尋找兩個有序陣列的中位數
給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。示例1 nums1 1,3 nums2 2 則中位數是 2.0示例2 nums1 1,2 num...
力扣 尋找兩個有序陣列的中位數 C
給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。nums1 1,3 nums2 2 則中位數是 2.0 nums1 1,2 nums2 3,4 ...