1、二维数组中的查找

1、暴力法遍历
运行时间: 169 ms 占用内存:17432K

public class Solution {
    public boolean Find(int target, int [][] array) {
        int lenY=array.length;
        int lenX=array[0].length;
        boolean flag=false;
        for(int j=0;j<lenY;j++){
            for(int i=0;i<lenX;i++){
                if (target == array[j][i])
                    return true;
            }
        }
        return flag;
    }
}

2、分治法
【思路】:类似于二分法,从右上角元素开始查找。大于target说明在下面,i++;小于target说明在左侧,j--
同理,也可以从左下角开始查找。大于target,说明在右侧,j++;小于target说明在上方,i--

运行时间:239ms, 占用内存:18144k

public class Solution {
    public boolean Find(int target, int [][] array) {
        int lenY=array.length;
        int lenX=array[0].length;
        boolean flag=false;
        // 以右上角开始查找
        // 第一次晓得for循环内的三个语句都是可以省略的。。
        for(int i=0,j=lenX-1;(i>=0&&i<lenY) && (j>=0&&j<lenX);){
            if (target == array[i][j])
               return true;
            else if(target < array[i][j])
                j--;
            else if(target > array[i][j])
                i++;
        }
        return flag;
    }
}
全部评论

相关推荐

2025-12-17 17:15
华东师范大学 运营
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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