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


        目录
        相关文章
        【LeetCode 39】700.二叉搜索树中的搜索
        【LeetCode 39】700.二叉搜索树中的搜索
        160 0
        |
        索引
        Leetcode第三十三题(搜索旋转排序数组)
        这篇文章介绍了解决LeetCode第33题“搜索旋转排序数组”的方法,该问题要求在旋转过的升序数组中找到给定目标值的索引,如果存在则返回索引,否则返回-1,文章提供了一个时间复杂度为O(logn)的二分搜索算法实现。
        269 0
        Leetcode第三十三题(搜索旋转排序数组)
        |
        算法 索引
        LeetCode(搜索插入位置)
        如何使用二分查找算法来解决LeetCode上的“搜索插入位置”问题,确保时间复杂度为O(log n),并提供了详细的代码实现和分析。
        153 2
        |
        算法 Java
        LeetCode(一)Java
        LeetCode(一)Java
        226 0
        |
        Java
        Java搜索与替换
        Java搜索与替换
        134 4
        Java搜索与替换
        |
        存储 Java
        如何在 Java 中初始化二维 ArrayList
        【8月更文挑战第23天】
        540 1
        LeetCode第81题搜索旋转排序数组 II
        文章讲解了LeetCode第81题"搜索旋转排序数组 II"的解法,通过二分查找算法并加入去重逻辑来解决在旋转且含有重复元素的数组中搜索特定值的问题。
        LeetCode第81题搜索旋转排序数组 II
        LeetCode第74题搜索二维矩阵
        文章讲解了LeetCode第74题"搜索二维矩阵"的解决方案,利用二分搜索法将问题简化,并通过数学转换找到二维矩阵中的对应元素,展示了将二维问题转化为一维问题的解题技巧。
        LeetCode第74题搜索二维矩阵
        LeetCode第35题搜索插入位置
        这篇文章介绍了LeetCode第35题"搜索插入位置"的解题方法,通过使用二分查找法,高效地找到在有序数组中插入一个目标数的最佳位置。
        LeetCode第35题搜索插入位置
        LeetCode第33题搜索旋转排序数组
        这篇文章介绍了LeetCode第33题"搜索旋转排序数组"的解题方法,通过使用二分查找法并根据数组的有序性质调整搜索范围,实现了时间复杂度为O(log n)的高效搜索算法。
        LeetCode第33题搜索旋转排序数组