Skip to content

Commit 0ff1161

Browse files
committed
74
1 parent 15d9b20 commit 0ff1161

File tree

1 file changed

+114
-0
lines changed

1 file changed

+114
-0
lines changed
+114
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
1+
2+
3+
## Binary Search one by one
4+
#### Runtime: 61 ms, faster than 20.87% of Python3
5+
#### Memory Usage: 15 MB, less than 35.15% of Python3
6+
```py
7+
class Solution:
8+
def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
9+
m = len(matrix) - 1
10+
n = len(matrix[0]) - 1
11+
start, end = 0, m
12+
middle = m // 2
13+
is_bound_exist = False
14+
while start <= end:
15+
print(start, middle, end)
16+
if matrix[middle][0] <= target and target <= matrix[middle][n]:
17+
matrix = matrix[middle]
18+
is_bound_exist = True
19+
break
20+
21+
elif matrix[middle][n] < target:
22+
start = middle + 1
23+
middle = (start + end) // 2
24+
25+
else:
26+
end = middle - 1
27+
middle = (start + end) // 2
28+
29+
if is_bound_exist:
30+
start, end = 0, n
31+
middle = n // 2
32+
while start <= end:
33+
if matrix[middle] == target :
34+
return True
35+
36+
elif matrix[middle] < target:
37+
start = middle + 1
38+
middle = (start + end) // 2
39+
40+
else:
41+
end = middle - 1
42+
middle = (start + end) // 2
43+
44+
return False
45+
46+
```
47+
48+
## Nested Binary Search
49+
#### Runtime: 58 ms, faster than 23.38% of Python3
50+
#### Memory Usage: 14.9 MB, less than 35.15% of Python3
51+
```py
52+
class Solution:
53+
def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
54+
m = len(matrix) - 1
55+
n = len(matrix[0]) - 1
56+
start, end = 0, m
57+
middle = m // 2
58+
while start <= end:
59+
if matrix[middle][0] <= target and target <= matrix[middle][n]:
60+
matrix = matrix[middle]
61+
start, end = 0, n
62+
middle = n // 2
63+
while start <= end:
64+
if matrix[middle] == target :
65+
return True
66+
67+
elif matrix[middle] < target:
68+
start = middle + 1
69+
middle = (start + end) // 2
70+
71+
else:
72+
end = middle - 1
73+
middle = (start + end) // 2
74+
return False
75+
76+
elif matrix[middle][n] < target:
77+
start = middle + 1
78+
middle = (start + end) // 2
79+
80+
else:
81+
end = middle - 1
82+
middle = (start + end) // 2
83+
84+
return False
85+
86+
```
87+
88+
## 2D array -> 1D and Binary search
89+
#### Runtime: 71 ms, faster than 13.03% of Python3
90+
#### Memory Usage: 14.7 MB, less than 64.82% of Python3
91+
```py
92+
class Solution:
93+
def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
94+
matrix = [val
95+
for sublist in matrix
96+
for val in sublist]
97+
98+
m = len(matrix) - 1
99+
start, end = 0, m
100+
middle = m // 2
101+
102+
while start <= end:
103+
if matrix[middle] == target :
104+
return True
105+
106+
elif matrix[middle] < target:
107+
start = middle + 1
108+
middle = (start + end) // 2
109+
110+
else:
111+
end = middle - 1
112+
middle = (start + end) // 2
113+
return False
114+
```

0 commit comments

Comments
 (0)