面试题4:二维数组中的查找
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
题目地址:https://leetcode-cn.com/problems/er-wei-shu-zu-zhong-de-cha-zhao-lcof/
思路:
从二维数组的右上角元素和目标值进行比较,因为每一行都是递增,每一列都是递增,如果目标值大于右上角位置元素,说明该行元素都不符合条件,直接排除该行。如果目标值小于右上角位置元素说明该列元素不符合,直接排除该列。
public boolean findNumberIn2DArray(int[][] matrix, int target) { if (matrix == null || matrix.length == 0 || matrix[0].length == 0) { return false; } int rows = matrix.length; int columns = matrix[0].length; int row = 0; int column = columns - 1; while (row < rows && column >= 0) { if (matrix[row][column] == target) { return true; } else if (matrix[row][column] > target) { column--; } else { row++; } } return false; }
关于本题个人认为讲解很好的视频:https://www.bilibili.com/video/BV12J411i7A6
学习的博客多用于在笔记中,防止笔记过于臃肿,所以将样例及运行结果放在博客中,后以超链接的形式记录在笔记中,所以有些博文过于单薄。如果有小伙伴遇到问题欢迎评论,看到就会回复,学渣一枚,加油努力。