刷题No9. Search a 2D Matrix II (java)【数组】

题目:编写一个高效的算法来搜索m*n矩阵中的一个目标值target.该矩阵具有如下特性:

1:每行的元素从左到右升序排列

2:每列的元素从上到下升序排列

package com.company;

/**
 * 整个矩阵数据是逐行递增,逐列递增的。所以,行首和列首是最小的,也就是如果判断这一行的行首元素比target大,
 * 那么,这一行就可以直接排除了。列首也同样进行如此判断。
 */

public class TestNo9 {
    public static void main(String[] args) {
        int a[][] = {{1,4,7,11},{2,5,8,12},{3,6,9,16},{10,13,14,17}};
        TestNo9 t = new TestNo9();
        System.out.println(t.searchMatrix(a,3));
    }
    public boolean 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(matrix[i][j] == target){
                return true;
            }else if(matrix[i][j]<target){
                j++;  //列增加,向右收缩
            } else if(matrix[i][j] > target){
                i--;  //行减少,向上收缩
            }

        }
        return false;

    }
}
发布了46 篇原创文章 · 获赞 11 · 访问量 3595

猜你喜欢

转载自blog.csdn.net/qq_40664693/article/details/103972440