240. 搜索二维矩阵 II -- 力扣 --JAVA

简介: 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。每列的元素从上到下升序排列。

 题目

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

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

    解题思路一

      1. 逐个遍历

      代码展示

      class Solution {
          public boolean searchMatrix(int[][] matrix, int target) {
              int m = matrix.length;
              int n = matrix[0].length;
              for (int i = 0; i < m; i++){
                  for (int j = 0; j < n; j++){
                      if(matrix[i][j] == target){
                          return true;
                      }
                  }
              }
              return false;
          }
      }

      image.gif

      解题思路

        1. 对每一行数据进行二分法查找

        代码展示

        class Solution {
            public boolean searchMatrix(int[][] matrix, int target) {
                int m = matrix.length;
                int n = matrix[0].length;
                for (int i = 0; i < m; i++){
                    int left = 0, right = n - 1;
                    while (left <= right){
                        int mid = (left + right) / 2;
                        if(matrix[i][mid] == target){
                            return true;
                        }
                        if(matrix[i][mid] > target){
                            right = mid - 1;
                        } else {
                            left = mid + 1;
                        }
                    }
                }
                return false;
            }
        }

        image.gif


        目录
        相关文章
        |
        3月前
        |
        存储 算法 NoSQL
        LeetCode第73题矩阵置零
        文章介绍了LeetCode第73题"矩阵置零"的解法,通过使用矩阵的第一行和第一列作为标记来记录哪些行或列需要置零,从而在不增加额外空间的情况下解决问题。
        LeetCode第73题矩阵置零
        |
        2月前
        |
        Java
        Java搜索与替换
        Java搜索与替换
        24 4
        Java搜索与替换
        |
        27天前
        |
        算法 索引
        LeetCode(搜索插入位置)
        如何使用二分查找算法来解决LeetCode上的“搜索插入位置”问题,确保时间复杂度为O(log n),并提供了详细的代码实现和分析。
        14 2
        |
        27天前
        |
        索引
        Leetcode第三十三题(搜索旋转排序数组)
        这篇文章介绍了解决LeetCode第33题“搜索旋转排序数组”的方法,该问题要求在旋转过的升序数组中找到给定目标值的索引,如果存在则返回索引,否则返回-1,文章提供了一个时间复杂度为O(logn)的二分搜索算法实现。
        16 0
        Leetcode第三十三题(搜索旋转排序数组)
        |
        26天前
        【LeetCode 39】700.二叉搜索树中的搜索
        【LeetCode 39】700.二叉搜索树中的搜索
        12 0
        |
        27天前
        |
        算法 C++
        Leetcode第59题(螺旋矩阵2)
        这篇文章介绍了解决LeetCode第59题“螺旋矩阵II”的算法,通过C++编程实现按顺时针顺序填充一个n x n的正方形矩阵。
        14 0
        |
        27天前
        |
        算法 Java
        LeetCode(一)Java
        LeetCode(一)Java
        |
        3月前
        |
        算法
        LeetCode第81题搜索旋转排序数组 II
        文章讲解了LeetCode第81题"搜索旋转排序数组 II"的解法,通过二分查找算法并加入去重逻辑来解决在旋转且含有重复元素的数组中搜索特定值的问题。
        LeetCode第81题搜索旋转排序数组 II
        |
        3月前
        |
        存储 Java
        如何在 Java 中初始化二维 ArrayList
        【8月更文挑战第23天】
        84 1
        |
        3月前
        |
        算法
        LeetCode第74题搜索二维矩阵
        文章讲解了LeetCode第74题"搜索二维矩阵"的解决方案,利用二分搜索法将问题简化,并通过数学转换找到二维矩阵中的对应元素,展示了将二维问题转化为一维问题的解题技巧。
        LeetCode第74题搜索二维矩阵