思路
由于本矩阵逐行有序,则将其看成一个1×n 的一维数组,在这个数组上二分即可。
注意矩阵和一维数组的下标映射关系:arr[i]→(⌊mi⌋,i%m) , 其中m是列数。
#code-switcher
def _value_at_flat_index(matrix: List[List[int]], index: int, m: int) -> int:
给你一个满足下述两条属性的 m×n整数矩阵:
给你一个整数 target ,如果 target 在矩阵中,输出 true ;否则,输出 false。
第一行包含两个整数 m 和 n,分别表示矩阵的行数和列数。
接下来的 m 行,每行包含 n 个整数,表示矩阵的元素。
最后一行包含一个整数 target。
如果 target 存在于矩阵中,则输出 true,否则输出 false。输出不用考虑大小写。
输入
3 4
1 3 5 7
10 11 16 20
23 30 34 60
3
输出
true
输入
3 4
1 3 5 7
10 11 16 20
23 30 34 60
13
输出
false