leetcode-剑指offer-04二维数组中查找

题目描述:
在这里插入图片描述
①暴力破解:

class Solution {
    
    
    public boolean findNumberIn2DArray(int[][] matrix, int target) {
    
    
        boolean b = false;
    	Label:for (int i = 0; i < matrix.length; i++) {
    
    
			for (int j = 0; j < matrix[i].length; j++) {
    
    
				if(target==matrix[i][j]){
    
    
					b=true;
					break Label;
				}else {
    
    
					b=false;
				}	
			}
		}
    	return b;
    }
}

直接定义双重循环挨个遍历,直到找出或者查找到最后一个。

  • 时间复杂度:O(nm)
  • 空间复杂度:O(1)O(1)

②从右上角来看,比他小就向左移,比他大就向下移,类似于二叉查找树

class Solution2 {
    
    
    public boolean findNumberIn2DArray2(int[][] matrix, int target) {
    
    
    	if(matrix==null || matrix.length== 0 || matrix[0].length==0){
    
    
    		return false;	
    	}
    	int rows=matrix.length,columns=matrix[0].length;
    	int row=0,column=columns-1;
    	while(row<rows&&column>=0){
    
    
    		int num=matrix[row][column];
    		if(num==target){
    
    
    			return true;
    		}else if(num>target){
    
    
    			column--;
    		}else {
    
    
				row++;
			}
    	}
		return false;
    }
}

猜你喜欢

转载自blog.csdn.net/weixin_42856363/article/details/104845521