力扣第4題尋找兩個有序陣列的中位數個人題解

2021-09-26 08:39:39 字數 1013 閱讀 1296

題目

給定兩個大小為 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 ...