尋找兩個有序陣列的中位數

2021-10-01 22:05:49 字數 2652 閱讀 9567

給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2

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

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

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

示例 1:

nums1 = [1, 3]

nums2 = [2]

則中位數是 2.0

示例 2:

nums1 = [1, 2]

nums2 = [3, 4]

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

#include

#include

#include

#include

using

namespace std;

class

solution

;void

findmediansortedarrays()

for(

auto

&elem : myvec2)

multiset<

int> c1;

for(

auto

&elem : myvec1)

for(

auto

&elem : myvec2)

for(

auto

&elem : c1)

auto it = c1.

begin()

;int count = c1.

size()

;double middle =0;

if(count %2==

0)middle +

=*it;

it = c1.

begin()

;for

(int i =

0; i < count;

++i)

middle +

=*it;

middle /=2

;}else

middle =

*it;

}

cout <<

"middle: "

<< middle << endl;}}

;void

myinput

(vector<

int>

& vec)

}int

main()

官方解法

#include

#include

#include

#include

using

namespace std;

class

solution

;float

findmediansortedarrays()

m = myvec1.

size()

; n = myvec2.

size()

; cout <<

"m: "

<< m <<

" n: "

<< n << endl;

int imin =

0, imax = m, halflen =

(m + n +1)

/2;while

(imin <= imax)

else

if(i > imin && myvec1.

at(i -1)

> myvec2.

at(j)

)else

else

if( j ==0)

elseif(

(m + n)%2

==1)float minright =0;

if( i == m)

else

if( j == n )

else

return

(maxleft + minright)

/2.0;}

}return

0.0;}}

;void

myinput

(multiset<

int>

& mulset)

;int

main()

for(

auto

& elem : mulset2)

solution sl1

(vec1,vec2)

;float median =

0;

median = sl1.

findmediansortedarrays()

;

cout <<

"median: "

<< median << endl;

}void

myinput

(multiset<

int>

& mulset)

cin.

clear()

;

cin.

ignore()

;}

尋找兩個有序陣列的中位數

尋找兩個有序陣列的中位數 user hihone date 2019 1 31 time 16 32 description 給定兩個大小為 m 和 n 的有序陣列 nums1 和 nums2。請你找出這兩個有序陣列的中位數,並且要求演算法的時間複雜度為 o log m n 你可以假設 nums1 ...

尋找兩個有序陣列的中位數

思路 將兩個陣列排序,然後判斷陣列長度,長度為單數,則取二分之一處的數,否則取二分之一處和二分之一減一處的數之和除以2.var findmediansortedarrays function nums1,nums2 var mid math.floor arr.length 2 if arr.len...

尋找兩個有序陣列的中位數

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