https://leetcode.com/problems/median-of-two-sorted-arrays/
Given two sorted arrays nums1
and nums2
of size m
and n
respectively, return the median of the two sorted arrays.
The overall run time complexity should be O(log (m+n))
.
Example 1:
Input: nums1 = [1,3], nums2 = [2] Output: 2.00000 Explanation: merged array = [1,2,3] and median is 2.
Example 2:
Input: nums1 = [1,2], nums2 = [3,4] Output: 2.50000 Explanation: merged array = [1,2,3,4] and median is (2 + 3) / 2 = 2.5.
Constraints:
nums1.length == m
nums2.length == n
0 <= m <= 1000
0 <= n <= 1000
1 <= m + n <= 2000
-106 <= nums1[i], nums2[i] <= 106
思路:
比較差的做法是,使用額外的空間
把兩個 array merge 在一起,保持 sorted
如果兩個 array 都還有元素,就比大小,小的先 merge 進新 array
直到array 1 空了,就把 array 2 剩下的元素 merge 進新 array
最後回傳中位數
比較好的做法,不需要使用額外空間
因為你知道兩個 array 相加的元素個素 totalSize
所以可以知道中位數是在第幾個元素 half
就一路找出位在中位數的元素值就好 mid
要記得記住前一個元素值 preMid,因為若元素個素是偶素
那中位數就是 (preMid + mid) / 2
當然也可以參考網路上的思路
https://www.youtube.com/watch?v=KB9IcSCDQ9k