u
This commit is contained in:
@@ -0,0 +1,58 @@
|
||||
package top100liked
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
)
|
||||
|
||||
// https://leetcode.cn/problems/search-a-2d-matrix/?envType=study-plan-v2&envId=top-100-liked
|
||||
|
||||
// 难在边界条件
|
||||
func searchMatrix(matrix [][]int, target int) bool {
|
||||
// 第一列竖着找
|
||||
m := len(matrix)
|
||||
n := len(matrix[0])
|
||||
for i := range m {
|
||||
cur := matrix[i][0]
|
||||
switch {
|
||||
case cur == target:
|
||||
return true
|
||||
case cur > target:
|
||||
// target 可能在 i-1 行
|
||||
if i-1 >= 0 {
|
||||
for j := range n - 1 {
|
||||
if matrix[i-1][j+1] < target {
|
||||
continue
|
||||
} else if matrix[i-1][j+1] == target {
|
||||
return true
|
||||
} else if matrix[i-1][j+1] > target {
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
case cur < target:
|
||||
// 如果 i == m-1 (最后一行)
|
||||
if i == m-1 {
|
||||
for j := range n - 1 {
|
||||
if matrix[i][j+1] < target {
|
||||
continue
|
||||
} else if matrix[i][j+1] == target {
|
||||
return true
|
||||
} else if matrix[i][j+1] > target {
|
||||
return false
|
||||
}
|
||||
}
|
||||
}
|
||||
continue
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
func Test(t *testing.T) {
|
||||
matrix := [][]int{{1, 3, 5, 7}, {10, 11, 16, 20}, {23, 30, 34, 60}}
|
||||
target := 3
|
||||
fmt.Println(searchMatrix(matrix, target))
|
||||
target = 13
|
||||
fmt.Println(searchMatrix(matrix, target))
|
||||
}
|
||||
Reference in New Issue
Block a user