Skip to content

Commit baf6324

Browse files
authored
feat: add swift implementation to lcci problem: No.10.09 (#2715)
1 parent e71e993 commit baf6324

File tree

3 files changed

+90
-0
lines changed

3 files changed

+90
-0
lines changed

lcci/10.09.Sorted Matrix Search/README.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,37 @@ public class Solution {
177177
}
178178
```
179179

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+
180211
<!-- tabs:end -->
181212

182213
### 方法二:从左下角或右上角搜索

lcci/10.09.Sorted Matrix Search/README_EN.md

Lines changed: 31 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,37 @@ public class Solution {
185185
}
186186
```
187187

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+
188219
<!-- tabs:end -->
189220

190221
### Solution 2: Search from the Bottom Left or Top Right
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
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+
}

0 commit comments

Comments
 (0)