LeetCode240. 搜索二维矩阵 II (面试题4:二维数组中的查找)
程序员文章站
2022-07-14 15:25:32
...
思路:
- 从每排的最后一个数开始和目标值进行比较,大于target则排除此列,小于target则排除此行。
- 一步一步缩小比较范围。
Swift通过代码:
func findNumberIn2DArray(_ matrix: [[Int]], _ target: Int) -> Bool {
if matrix.count <= 0 {
return false
}
let col = matrix.count
let row = matrix[0].count
if row <= 0 {
return false
}
var i = 0
var j = row - 1
while i < col, i >= 0, j >= 0, j < row {
if matrix[i][j] > target {
j-=1
} else if matrix[i][j] < target {
i+=1
} else {
return true
}
}
return false
}
未通过代码:
- Swift 的for循环只能正序,可以用
reversed()
逆序,但是提交时报错
Fatal error: Can't form Range with upperBound < lowerBound
func findNumberIn2DArrayOne(_ matrix: [[Int]], _ target: Int) -> Bool {
if matrix.count <= 0 {
return false
}
let col = matrix.count
let row = matrix[0].count
for var i in 0...(col-1) {
for var j in (0...(row-1)).reversed() {
if matrix[i][j] > target {
j-=1
} else if matrix[i][j] < target {
i+=1
} else {
return true
}
}
}
return false
}