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。
全部评论

相关推荐

MScoding:你这个实习有一个是当辅导老师,这个和找技术岗没有关系吧?
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务