Files
leetcode/top-100-liked/64/leetcode_test.go
T
2026-07-15 20:46:11 +08:00

59 lines
1.2 KiB
Go

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))
}