1351. 统计有序矩阵中的负数


二分法
1 是一个递减序列。可以使用二分法来获取第一个非负数索引位置
2 如果数组的最后一个元素都大于0 整个数组都可以抛弃了
3 如果数组第一个元素小于0 整个数组都是负数了
package mainimport "fmt"func countNegatives1(grid [][]int) int {var res intfor i:=0;i<len(grid);i++{// 行for j:=0;j<len(grid[i]);j++{// 列if grid[i][j]<0{res++}}}return res}func countNegatives(grid [][]int) int {var res intfor i:=0;i<len(grid);i++{c :=len(grid[i])if grid[i][c-1]>=0{continue}if grid[i][0]<0{res +=ccontinue}r := binarySearch(grid[i])res +=c-r}return res}func binarySearch(g []int) int {l:=0r :=len(g)-1for l<=r{mid :=l+(r-l)>>1if g[mid]>=0{l = mid+1}else {r =mid-1}}return l}func main() {grid := [][]int{{4,3,2,-1},{3,2,1,-1},{1,1,-1,-2},{-1,-1,-2,-3}}fmt.Println(countNegatives(grid))//fmt.Println(binarySearch([]int{4,3,2,-1}))//fmt.Println(binarySearch([]int{3,2,1,-1}))//fmt.Println(binarySearch([]int{1,1,-1,-2}))//fmt.Println(binarySearch([]int{0,1,2,3}))}

