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

二维数组中的查找

https://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e

总结:
1.可以从右上角或左下角开始查找target,如果相等返回true;如果当前值大于target,那就删除这一列元素;如果当前值小于target,那就删除这一行元素。之所以是右上角或左下角,是因为从这两个位置查找,缩小范围才不会有重复部分,简化了查找。
2.还要考虑数组为空的情况

public class Solution {
    public boolean Find(int target, int [][] array) {
        int row = array.length;
        int col = array[0].length;
        if(row==0&&col==0)
            return false;
        int rowIndex = 0,colIndex = col-1;
        while(rowIndex>=0&&rowIndex<row&&colIndex>=0&&colIndex<col){
            if(array[rowIndex][colIndex]==target)
                return true;
            else if(array[rowIndex][colIndex]>target){
                colIndex = colIndex-1;
            }else{
                rowIndex = rowIndex+1;
            }

        }
        return false;
    }
}
全部评论

相关推荐

不愿透露姓名的神秘牛友
08-20 19:41
那一天的Java_J...:简历完全流水账,学生思维很严重,还有很大的优化空间,可以多看看牛客的简历。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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