Skip to content
本页目录

0074-搜索二维矩阵

https://leetcode.cn/problems/search-a-2d-matrix

编写一个高效的算法来判断m x n矩阵中,是否存在一个目标值。该矩阵具有如下特性: 每行中的整数从左到右按升序排列。 每行的第一个整数大于前一行的最后一个整数。

示例 1:

输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3
输出:true

示例 2:

输入: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
  • -10^4 <= matrix[i][j], target <= 10^4

思路

选择左下角的点作为切入点,根据矩阵特性如果目标数字比他大,那么一定是在右边。 如果目标数字比他小一定在上边。 如果最后查找越界,则说明没找到对应数字

参考代码

csharp
public class Solution {
    public bool SearchMatrix(int[][] matrix, int target) {
    	if(matrix.Length == 0){
    		return false;
    	}
    	//选择左下角作为起点
    	int i = matrix.Length - 1;
    	int j = 0;
    	while(i >= 0 && j < matrix[0].Length){
    		if(target == matrix[i][j]){ //找到
    			return true;
    		}
    		else if(target > matrix[i][j]){ //右边
    			j++;
    		}
    		else{ //上边
    			i--;
    		}
    	}
    	return false;
    }
}

Released under the MIT License.