Skip to content

Commit d2d1e39

Browse files
committed
feat: add solutions to lc problem: No.0240. Search a 2D Matrix II
1 parent f3f99f0 commit d2d1e39

File tree

6 files changed

+198
-10
lines changed

6 files changed

+198
-10
lines changed

solution/0200-0299/0240.Search a 2D Matrix II/README.md

+73-1
Original file line numberDiff line numberDiff line change
@@ -48,22 +48,94 @@
4848

4949
<!-- 这里可写通用的实现逻辑 -->
5050

51+
从左下角(或右上角)开始查找即可。
52+
5153
<!-- tabs:start -->
5254

5355
### **Python3**
5456

5557
<!-- 这里可写当前语言的特殊实现逻辑 -->
5658

5759
```python
58-
60+
class Solution:
61+
def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
62+
m, n = len(matrix), len(matrix[0])
63+
i, j = m - 1, 0
64+
while i >= 0 and j < n:
65+
if matrix[i][j] == target:
66+
return True
67+
if matrix[i][j] > target:
68+
i -= 1
69+
else:
70+
j += 1
71+
return False
5972
```
6073

6174
### **Java**
6275

6376
<!-- 这里可写当前语言的特殊实现逻辑 -->
6477

6578
```java
79+
class Solution {
80+
public boolean searchMatrix(int[][] matrix, int target) {
81+
int m = matrix.length, n = matrix[0].length;
82+
int i = m - 1, j = 0;
83+
while (i >= 0 && j < n) {
84+
if (matrix[i][j] == target) {
85+
return true;
86+
}
87+
if (matrix[i][j] > target) {
88+
--i;
89+
} else {
90+
++j;
91+
}
92+
}
93+
return false;
94+
}
95+
}
96+
```
97+
98+
### **C++**
99+
100+
```cpp
101+
class Solution {
102+
public:
103+
bool searchMatrix(vector<vector<int>>& matrix, int target) {
104+
int m = matrix.size(), n = matrix[0].size();
105+
int i = m - 1, j = 0;
106+
while (i >= 0 && j < n) {
107+
if (matrix[i][j] == target) {
108+
return true;
109+
}
110+
if (matrix[i][j] > target) {
111+
--i;
112+
} else {
113+
++j;
114+
}
115+
}
116+
return false;
117+
}
118+
};
119+
```
66120
121+
### **Go**
122+
123+
```go
124+
func searchMatrix(matrix [][]int, target int) bool {
125+
m, n := len(matrix), len(matrix[0])
126+
i, j := m-1, 0
127+
for i >= 0 && j < n {
128+
if matrix[i][j] == target {
129+
return true
130+
}
131+
if matrix[i][j] > target {
132+
i--
133+
} else {
134+
j++
135+
}
136+
}
137+
return false
138+
}
67139
```
68140

69141
### **...**

solution/0200-0299/0240.Search a 2D Matrix II/README_EN.md

+71-1
Original file line numberDiff line numberDiff line change
@@ -47,13 +47,83 @@
4747
### **Python3**
4848

4949
```python
50-
50+
class Solution:
51+
def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
52+
m, n = len(matrix), len(matrix[0])
53+
i, j = m - 1, 0
54+
while i >= 0 and j < n:
55+
if matrix[i][j] == target:
56+
return True
57+
if matrix[i][j] > target:
58+
i -= 1
59+
else:
60+
j += 1
61+
return False
5162
```
5263

5364
### **Java**
5465

5566
```java
67+
class Solution {
68+
public boolean searchMatrix(int[][] matrix, int target) {
69+
int m = matrix.length, n = matrix[0].length;
70+
int i = m - 1, j = 0;
71+
while (i >= 0 && j < n) {
72+
if (matrix[i][j] == target) {
73+
return true;
74+
}
75+
if (matrix[i][j] > target) {
76+
--i;
77+
} else {
78+
++j;
79+
}
80+
}
81+
return false;
82+
}
83+
}
84+
```
85+
86+
### **C++**
87+
88+
```cpp
89+
class Solution {
90+
public:
91+
bool searchMatrix(vector<vector<int>>& matrix, int target) {
92+
int m = matrix.size(), n = matrix[0].size();
93+
int i = m - 1, j = 0;
94+
while (i >= 0 && j < n) {
95+
if (matrix[i][j] == target) {
96+
return true;
97+
}
98+
if (matrix[i][j] > target) {
99+
--i;
100+
} else {
101+
++j;
102+
}
103+
}
104+
return false;
105+
}
106+
};
107+
```
56108
109+
### **Go**
110+
111+
```go
112+
func searchMatrix(matrix [][]int, target int) bool {
113+
m, n := len(matrix), len(matrix[0])
114+
i, j := m-1, 0
115+
for i >= 0 && j < n {
116+
if matrix[i][j] == target {
117+
return true
118+
}
119+
if matrix[i][j] > target {
120+
i--
121+
} else {
122+
j++
123+
}
124+
}
125+
return false
126+
}
57127
```
58128

59129
### **...**
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
class Solution {
2+
public:
3+
bool searchMatrix(vector<vector<int>>& matrix, int target) {
4+
int m = matrix.size(), n = matrix[0].size();
5+
int i = m - 1, j = 0;
6+
while (i >= 0 && j < n) {
7+
if (matrix[i][j] == target) {
8+
return true;
9+
}
10+
if (matrix[i][j] > target) {
11+
--i;
12+
} else {
13+
++j;
14+
}
15+
}
16+
return false;
17+
}
18+
};
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
func searchMatrix(matrix [][]int, target int) bool {
2+
m, n := len(matrix), len(matrix[0])
3+
i, j := m-1, 0
4+
for i >= 0 && j < n {
5+
if matrix[i][j] == target {
6+
return true
7+
}
8+
if matrix[i][j] > target {
9+
i--
10+
} else {
11+
j++
12+
}
13+
}
14+
return false
15+
}
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,17 @@
11
class Solution {
22
public boolean searchMatrix(int[][] matrix, int target) {
3-
int i = matrix.length - 1;
4-
int j = 0;
5-
while (i >= 0 && j < matrix[0].length) {
6-
if (matrix[i][j] < target) {
7-
++j;
8-
} else if (matrix[i][j] > target) {
3+
int m = matrix.length, n = matrix[0].length;
4+
int i = m - 1, j = 0;
5+
while (i >= 0 && j < n) {
6+
if (matrix[i][j] == target) {
7+
return true;
8+
}
9+
if (matrix[i][j] > target) {
910
--i;
1011
} else {
11-
return true;
12+
++j;
1213
}
1314
}
1415
return false;
1516
}
16-
}
17+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
class Solution:
2+
def searchMatrix(self, matrix: List[List[int]], target: int) -> bool:
3+
m, n = len(matrix), len(matrix[0])
4+
i, j = m - 1, 0
5+
while i >= 0 and j < n:
6+
if matrix[i][j] == target:
7+
return True
8+
if matrix[i][j] > target:
9+
i -= 1
10+
else:
11+
j += 1
12+
return False

0 commit comments

Comments
 (0)