4 尋找兩個正序陣列的中位數 leetcode

2021-10-09 03:28:40 字數 1340 閱讀 6122

題目描述

給定兩個大小為 m 和 n 的正序(從小到大)陣列 nums1 和 nums2。

請你找出這兩個正序陣列的中位數,並且要求演算法的時間複雜度為 o(log(m + n))。

你可以假設 nums1 和 nums2 不會同時為空。

示例

nums1 = [1, 3]

nums2 = [2]

則中位數是 2.0

nums1 = [1, 2] nums2 = [3, 4]

則中位數是 (2 + 3)/2 = 2.5

**

public

class 兩個正序陣列的中位數

if(nums2 == null || nums2.length ==0)

int[

] temp =

newint

[nums1.length + nums2.length]

;int i =0;

int j =0;

int k =0;

while

(true

)break;}

}else

break;}

}}return temp.length %2==

0?(temp[temp.length /2]

+ temp[

(temp.length/2)

-1])

/2.0

: temp[temp.length /2]

/1.0;}

public

static

void

main

(string[

] args)

;int

nums2 =

;double result = test.

findmediansortedarrays

(nums1, nums2)

; system.out.

println

(result);}

}

思路

易知,如若求單個有序陣列的中位數,可大致分兩種情況。

(當陣列長度為偶數的時候,中位數是(a[a.length / 2] + a[(a.length / 2) - 1]) )/ 2.0,否則中位數是(a[a.length / 2])

設定乙個長度為陣列nums1和nums2長度之和的陣列temp,將nums1和nums2合併到temp。(關於兩個陣列的合併請檢視**)

根據(1)方法找到中位數,並返回。

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

思路 我現在還沒有進行優化,大概就是合併陣列 參照之前的順序表合併 然後如果合併陣列的大小sum是偶數,返回sum 2和sum 2 1兩個元素除以二,如果sum是奇數則直接返回sum 2的元素 double findmediansortedarrays int nums1,int nums1size...

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

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

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

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