每行中的整數從左到右按升序排列。
每行的第一個整數大於前一行的最後一個整數。javascript
示例 1:java
輸入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3 輸出:true
示例 2:python
輸入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13 輸出:false
提示:算法
m == matrix.length n == matrix[i].length 1 <= m, n <= 100 -104 <= matrix[i][j], target <= 104
/** * @param {number[][]} matrix * @param {number} target * @return {boolean} */ var searchMatrix = function(matrix, target) { for(let i=0;i<matrix.length;i++){ for(let j=0;j<matrix[0].length;j++){ if(matrix[i][j]===target){ return true } } } return false };
/** * @param {number[][]} matrix * @param {number} target * @return {boolean} */ /* 以二維數組左下角爲原點,創建直角座標軸。 若當前數字大於了查找數,查找往上移一位。 若當前數字小於了查找數,查找往右移一位。 */ var searchMatrix = function(matrix, target) { let x = matrix.length-1,y = 0 while(x>=0 && y<matrix[0].length){ if(matrix[x][y]===target){ return true }else if(matrix[x][y]>target){ x-- }else{ y++ } } return false };
/** * @param {number[][]} matrix * @param {number} target * @return {boolean} */ var searchMatrix = function(matrix, target) { let m = matrix.length,n=matrix[0].length let low = 0,high = m*n-1 while(low<=high){ let mid = Math.floor((high-low)/2)+low //中位 let x = matrix[Math.floor(mid/n)][mid%n] //所在的值 if(x<target){ low = mid+1 }else if(x>target){ high = mid-1 }else{ return true } } return false };
function searchMatrix(matrix: number[][], target: number): boolean { let x: number = matrix.length - 1, y:number = 0 while (x >= 0 && y < matrix[0].length) { if (matrix[x][y] === target) { return true } else if (matrix[x][y] > target) { x-- } else { y++ } } return false };
class Solution(object): def searchMatrix(self, matrix, target): for i in range(len(matrix)): for j in range(len(matrix[0])): if matrix[i][j]==target: return True return False
def any(iterable): for element in iterable: if element: return True return False
class Solution(object): def searchMatrix(self, matrix, target): return any(target in row for row in matrix)
func searchMatrix(matrix [][]int, target int) bool { m := len(matrix) n := len(matrix[0]) var i = 0 for i < m && n > 0 { if target == matrix[i][n-1] { return true } else if target < matrix[i][n-1] { n-- } else { i++ } } return false }