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

二维数组中的查找

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

/**
 * @author jingbu
 *
 *  二维数组中的查找
 *      在一个二维数组array中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。
 *      请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
 *
 *     易错点,二维数组判空
 */
public class Main {
    public static void main(String[] args) {

        int target=3;
        int[][] arr= {{}
//                {1,2,8, 9},
//                {2,4,9,12},
//                {4,7,10,13},
//                {6,8,11,15}
        };

        Solution solution = new Solution();
        System.out.println(solution.Find(target, arr));
    }
}

class Solution {
        public boolean Find(int target, int [][] array) {
            //如果数组直接为null;数组不为null,array.length==0,数组形式为{};
            //数组不为null,array[0].length==0,数组形式为{{}}直接返回false
            //如果此处不判断下面会报数组越界
            if(array==null|| array.length==0||array[0].length==0){
                return false;
            }
            //数组的行数
            int m= array.length;
            //数组的列数
            int n=array[0].length;

            //判断目标值与每行最后一个值的大小
            for (int i = 0; i < m; i++) {
                //如果最后一个值等于目标值,直接返回true
                if(array[i][n-1]==target){
                    return true;
                }
                //如果这一行有等于目标值的值,直接返回true
                else if(array[i][n-1]>target){
                    for (int j = 0; j < n-1; j++) {
                        if(array[i][j]==target){
                            return true;
                        }
                    }
                }
                //不满足如上的条件就去下一行判断
            }
            //都不满足的话说明不存在,返回false
            return false;
        }
}
全部评论

相关推荐

03-21 11:31
已编辑
门头沟学院 后端
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务