Java 题解 | #寻找牛群中的特定编号牛#
寻找牛群中的特定编号牛
https://www.nowcoder.com/practice/e0c6f3fba6dd40b99e8bcc0241631f9d
import java.util.*; public class Solution { /** * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可 * * * @param matrix int整型二维数组 * @param target int整型 * @return bool布尔型 */ public boolean searchMatrix (int[][] matrix, int target) { // write code here int row = 0; int column = matrix[0].length - 1; while (row >= 0 && column >= 0 && row < matrix.length && column < matrix[0].length) { int currentVal = matrix[row][column]; if (currentVal == target) { return true; } if (currentVal > target) { row++; } else { column--; } } return false; } }
Java编程语言。
这道题考察了在有序矩阵中查找目标值的问题。要求根据给定的有序二维整型数组 matrix 和目标值 target,判断目标值是否存在于矩阵中。矩阵的特点是每行从左到右递增,每列从上到下递增。
代码的文字解释如下:
- 初始时,将 row 设置为0,column 设置为矩阵的最右侧列号(即 matrix[0].length - 1)。然后,使用循环来遍历矩阵。循环的条件是 row 和 column 均在合法范围内,即大于等于0且小于矩阵的行数和列数。
- 这样可以保证在矩阵范围内进行查找。在循环中,首先获取当前位置的值 currentVal,即 matrix[row][column]。
- 通过比较 currentVal 和目标值 target 的大小来确定下一步操作:如果 currentVal 等于 target,说明找到了目标值,直接返回 true。如果 currentVal 大于 target,说明目标值可能在当前元素的上方,因此将行号 row 向下移动一行(row++)。
- 如果 currentVal 小于 target,说明目标值可能在当前元素的右侧,因此将列号 column 向左移动一列(column--)。循环结束后,如果没有找到目标值,则表示不存在,返回 false。