給定兩個大小為 m 和 n 的正序(從小到大)陣列 nums1 和 nums2。請你找出並返回這兩個正序陣列的中位數。
高階:你能設計乙個時間複雜度為 o(log (m+n)) 的演算法解決此問題
class
solution
while
(n >0)
nums[m+n-1]
= nums2[
--n]
;while
(m >0)
nums[m+n-1]
= nums1[
--m];if
(nums.length %2!=
0)result = nums[nums.length/2]
;else
result =
(double
)(nums[nums.length/2]
+ nums[nums.length/2-
1])/
2;return result;
}}
時間複雜度是 o(m+n),空間複雜度是 o(m+n)
class
solutionif(
((m+n)&1
)==0)
return
(pre + mid)
/2.0
;else
return mid;
}}
時間複雜度:遍歷 len/2+1 次,len=m+n,所以時間複雜度依舊是 o(m+n)。
空間複雜度: o(1)
class
solution
}private
double
getkthelement
(int
nums1,
int[
] nums2,
int astart,
int bstart,
int k)
}
求兩個排序陣列的中位數
設x 1.n 和y 1.n 為兩個陣列,每個都包含n個已排序好的數。給出乙個求陣列x和y中所有2n個元素的中位數的 o lgn 時間的演算法。演算法思想 該演算法類似於二分查詢演算法 1.兩個陣列中小於median的個數為 n 1 個,假設該median為陣列a中的第k個,k為陣列下標,那麼在陣列a...
求兩個有序陣列的中位數
要求 給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 例如 nums1 1,3 nums2 2 則中位數是 2.0 nums1 1,2 nums2 3,4 則中位數是 2 3 2 2.5 演算法解析...
求兩個有序陣列的中位數
原部落格 設陣列a的長度為m,陣列b的長度為n,兩個陣列都都是遞增有序的。求這兩個陣列的中位數 首先我們看看中位數的特點,乙個大小為n的陣列,如果n是奇數,則中位數只有乙個,陣列中恰好有 n 1 2 個元素比中位數小。如果n是偶數,則中位數有兩個 下中位數和上中位數 這裡我們只求下中位數,對於下中位...