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。
查看2道真题和解析
海康威视公司福利 1377人发布
