七七老师の白日梦
首页项目归档照片墙音乐灵境说说杂谈友链关于
封面

搜索二维矩阵:最大值比较

写作时间:2026-07-14 11:22:03

编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:

  • 每行的元素从左到右升序排列。
  • 每列的元素从上到下升序排列。

要求

  • 找数

分析

  • 特殊情况处理,处理空,矩阵长度为零的情况
  • 思考寻找target的方式,for循环还是while,介于明确的目标使用while
  • 因为题目给予了排序那么需要判断他们在哪一行哪一列

‍

代码

public class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        /*
         * 思路:
         * 从矩阵的右上角开始搜索,如果当前元素大于目标值,则向左移动一列;
         * 如果当前元素小于目标值,则向下移动一行。
         */
        if (matrix == null || matrix.length == 0 || matrix[0].length == 0) {
            return false;
        }

        int m = matrix.length;
        int n = matrix[0].length;

        // 从矩阵的右上角开始搜索
        int row = 0;
        int col = n - 1;

        while (row < m && col >= 0) {
            if (matrix[row][col] == target) {
                return true;
            } else if (matrix[row][col] > target) {
                // 如果当前元素大于目标值,则向左移动一列
                col--;
            } else {
                // 如果当前元素小于目标值,则向下移动一行
                row++;
            }
        }

        return false;
    }
}

‍

avatar

七七老师

分享代码日常

RECOMMENDED

七七旧事:复盘并改变写博客的方式

2026-07-02 22:54:38

字母异位词

2026-07-04 22:22:08

寻找两个正序数组的中位数:合并与二分

2026-07-08 15:56:26

Table of Contents