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

2021-10-25 05:48:23 字數 1308 閱讀 5548

給定兩個大小為 m 和 n 的正序(從小到大)陣列 nums1 和 nums2。請你找出並返回這兩個正序陣列的中位數。

高階:你能設計乙個時間複雜度為 o(log (m+n)) 的演算法解決此問題嗎?

示例 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

2023年10月25日

/*

* 因為兩個陣列都是有序的,尋找的是兩個陣列的中位數,因此我們每個陣列只需要找一半就可以了

* 用雙指標,通過迴圈將兩個陣列進行比較,較小的數給r,一直更新r和l,

* 當兩個陣列的和長度為奇數,就返回r,若為偶數,則返回r上一次更新的數,即l和r和的二分之一即可

*/public

double

findmediansortedarrays

(int

nums1,

int[

] nums2)

else}if

((m + n)%2

==0)return r;

}

這裡貼一下高階問題的解答(跪拜力扣大佬們),思路和邏輯不是一般的清晰

public

double

findmediansortedarrays

(int

nums1,

int[

] nums2)

private

intgetk

(int

nums1,

int start1,

int end1,

int[

] nums2,

int start2,

int end2,

int k)

else

}

力扣 尋找兩個正序陣列的中位數

給定兩個大小為 m 和 n 的正序 從小到大 陣列 nums1 和 nums2。請你找出這兩個正序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。示例 1 nums1 1 3 nums2 2 則中位數是 2.0 示例 2 nums...

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

題目 給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 和 nums2 不會同時為空。示例 1 nums1 1,3 nums2 2 則中位數是 2.0 示例 2 nums1 1...

力扣演算法篇 尋找兩個正序陣列的中位數

尋找兩個正序陣列的中位數 給定兩個大小分別為m和n的正序 從小到大 陣列nums1和nums2。請你找出並返回這兩個正序陣列的中位數。例項 題解 遍歷兩個陣列 得到有序的合併陣列並找到中位數 class solution vector int combine int i 0 int j 0 whil...