时间:2020.07.23
题目描述
给定M×N矩阵,每一行、每一列都按升序排列,请编写代码找出某元素。
输入输出案例

思路
从矩阵的右上角的元素开始找,右上角的元素与target比较:
Java代码
class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        //极端情况
        if(matrix==null) return false;
        if(matrix.length==0 || matrix[0].length==0) return false;
        //初始从右上角,这里记录右上角的左边为[row][col]
        int row =0;
        int col = matrix[0].length-1;
        while(row<matrix.length && col>=0){
            if(target==matrix[row][col]){
                return true;
            }else if(target<matrix[row][col]){
                col--;
            }else{
                row++;
            }
        }
        //执行到此,就是未找到
        return false;
    }
}
如果是我们返回找到的元素下标
矩阵查找.assets/image-20200723225152108.png)
import java.util.*;
public class Finder {
    public int[] findElement(int[][] matrix, int n, int m, int target) {
        // write code here
        //极端情况
        if(matrix==null) return new int[]{-1,-1};
        if(matrix.length==0 || matrix[0].length==0) return new int[]{-1,-1};
        //初始从右上角,这里记录右上角的左边为[row][col]
        int row =0;
        int col = m-1;
        while(row<n && col>=0){
            if(target==matrix[row][col]){
                return new int[]{row,col};
            }else if(target<matrix[row][col]){
                col--;
            }else{
                row++;
            }
        }
        //执行到此,就是未找到
        return new int[]{-1,-1};
    }
    
}
原文:https://www.cnblogs.com/jiyongjia/p/13369387.html