File tree Expand file tree Collapse file tree 3 files changed +90
-0
lines changed
lcci/10.09.Sorted Matrix Search Expand file tree Collapse file tree 3 files changed +90
-0
lines changed Original file line number Diff line number Diff line change @@ -177,6 +177,37 @@ public class Solution {
177
177
}
178
178
```
179
179
180
+ ``` swift
181
+ class Solution {
182
+ func searchMatrix (_ matrix : [[Int ]], _ target : Int ) -> Bool {
183
+ for row in matrix {
184
+ if binarySearch (row, target) {
185
+ return true
186
+ }
187
+ }
188
+ return false
189
+ }
190
+
191
+ private func binarySearch (_ array : [Int ], _ target : Int ) -> Bool {
192
+ var left = 0
193
+ var right = array.count - 1
194
+
195
+ while left <= right {
196
+ let mid = left + (right - left) / 2
197
+ if array[mid] == target {
198
+ return true
199
+ } else if array[mid] < target {
200
+ left = mid + 1
201
+ } else {
202
+ right = mid - 1
203
+ }
204
+ }
205
+
206
+ return false
207
+ }
208
+ }
209
+ ```
210
+
180
211
<!-- tabs: end -->
181
212
182
213
### 方法二:从左下角或右上角搜索
Original file line number Diff line number Diff line change @@ -185,6 +185,37 @@ public class Solution {
185
185
}
186
186
```
187
187
188
+ ``` swift
189
+ class Solution {
190
+ func searchMatrix (_ matrix : [[Int ]], _ target : Int ) -> Bool {
191
+ for row in matrix {
192
+ if binarySearch (row, target) {
193
+ return true
194
+ }
195
+ }
196
+ return false
197
+ }
198
+
199
+ private func binarySearch (_ array : [Int ], _ target : Int ) -> Bool {
200
+ var left = 0
201
+ var right = array.count - 1
202
+
203
+ while left <= right {
204
+ let mid = left + (right - left) / 2
205
+ if array[mid] == target {
206
+ return true
207
+ } else if array[mid] < target {
208
+ left = mid + 1
209
+ } else {
210
+ right = mid - 1
211
+ }
212
+ }
213
+
214
+ return false
215
+ }
216
+ }
217
+ ```
218
+
188
219
<!-- tabs: end -->
189
220
190
221
### Solution 2: Search from the Bottom Left or Top Right
Original file line number Diff line number Diff line change
1
+ class Solution {
2
+ func searchMatrix( _ matrix: [ [ Int ] ] , _ target: Int ) -> Bool {
3
+ for row in matrix {
4
+ if binarySearch ( row, target) {
5
+ return true
6
+ }
7
+ }
8
+ return false
9
+ }
10
+
11
+ private func binarySearch( _ array: [ Int ] , _ target: Int ) -> Bool {
12
+ var left = 0
13
+ var right = array. count - 1
14
+
15
+ while left <= right {
16
+ let mid = left + ( right - left) / 2
17
+ if array [ mid] == target {
18
+ return true
19
+ } else if array [ mid] < target {
20
+ left = mid + 1
21
+ } else {
22
+ right = mid - 1
23
+ }
24
+ }
25
+
26
+ return false
27
+ }
28
+ }
You can’t perform that action at this time.
0 commit comments