forked from Jack-Lee-Hiter/AlgorithmsByPython
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy path4. Median of Two Sorted Arrays
More file actions
49 lines (43 loc) · 983 Bytes
/
Copy path4. Median of Two Sorted Arrays
File metadata and controls
49 lines (43 loc) · 983 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
'''
There are two sorted arrays nums1 and nums2 of size m and n respectively.
Find the median of the two sorted arrays. The overall run time complexity should be O(log (m+n)).
Example 1:
nums1 = [1, 3]
nums2 = [2]
The median is 2.0
Example 2:
nums1 = [1, 2]
nums2 = [3, 4]
The median is (2 + 3)/2 = 2.5
'''
class Solution(object):
def findMedianSortedArrays(self, a, b):
n = len(a)+len(b)
if n&1:
return self.kthSmallest(a,b,n//2+1)
else:
return (self.kthSmallest(a,b,n//2+1) + self.kthSmallest(a,b,n//2))/2.0
def kthSmallest(self,a,b,k):
if len(a)+len(b) < k:
return None
i=0
j=0
flag = True
while k>0:
if i >= len(a):
j+=1
flag = False
elif j >= len(b):
i+=1
flag = True
elif a[i] <= b[j]:
i+=1
flag = True
elif a[i] > b[j]:
j+=1
flag = False
k-=1
if flag:
return a[i-1]
else:
return b[j-1]