题解 | #二维数组中的查找#

public class Solution {
    public boolean Find(int target, int [][] array) {
        if (array == null || array.length == 0 || array[0].length == 0) {
            return false;
        }
        int n = array.length;
        int m = array[0].length;

        int curN = 0;
        int curM = m - 1;


        /*
        数组的行递增和列递增使得数组查找时不知道向右走还是向下走,因为向这两个方向都是递增。

        有没有一种办法,使得数组像一个方向走是递增,一个方向走是递减,这样就可此确定每次走的方向

        如何使列递增,行递减,将所有的行反序一下。

        我们没必要真的反序,只需要从[0][m - 1]的位置开始遍历即可。

        大于target向左走,小于target向下走
        */

        while (true) {
            int cur = array[curN][curM];
         
            if (cur < target) {
                curN++;
            } else if (cur > target){
                curM--;
            } else {
                return true;
            }

            if (curM < 0 || curM >= m || curN < 0 || curN >= n) {
                return false;
            }
        }
    }
}

全部评论

相关推荐

12-20 11:26
复旦大学 Java
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务