【LeetCode-中等题】240. 搜索二维矩阵 II

文章目录

题目

方法一:暴力双for查找

java 复制代码
public boolean searchMatrix(int[][] matrix, int target) {
        for (int[] row : matrix) {
            for (int element : row) {
                if (element == target) {
                    return true;
                }
            }
        }
        return false;
    }

方法二:二分查找,对每二维数组进行拆分,一行一行的进行二分查找

java 复制代码
public boolean searchMatrix(int[][] matrix, int target) {
     for(int i = 0 ; i<matrix.length;i++){
         boolean isTrue = search(matrix[i],target);
         if(isTrue) return true;
     }
     return false;
    }

    //二分查找方法
    public boolean search(int[] nums,int target){
        int begin = 0 ;//二分起点
        int end = nums.length-1;//二分末尾点
        while(begin <= end){
            int mid = (end - begin)/2 + begin; //取中间点下标
            int midNum = nums[mid];//中间元素
            //判断中间元素与target大小
            if(target == midNum)  return true;//如果中间元素等于目标元素  直接返回结果
            else if(target > midNum )  begin = mid+1; //如果中间元素小于目标值  说明寻找元素肯定在mid+1  ,  end区间  更新下次起点
            else if(target < midNum )  end   = mid-1;//同理
        }
        //循环完没有找到mid元素  说明不存在target
        return false;
    }

方法三:列倒序Z字形查找

java 复制代码
	//关键在于这个判断 
	  if(matrix[row][col] > target)  col --;//若该位置的元素>目标元素,则往左移动一位
	  else if(matrix[row][col] < target)  row ++;//若该位置的元素<目标元素,则往下移动一位
	  else return true;//若满足相等的条件  则返回true
java 复制代码
public boolean searchMatrix(int[][] matrix, int target) {
     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)  col --;//若该位置的元素>目标元素,则往左移动一位
         else if(matrix[row][col] < target)  row ++;//若该位置的元素<目标元素,则往下移动一位
         else return true;//若满足相等的条件  则返回true
        
     }
     return false;
    }
相关推荐
luckys.one4 小时前
第9篇:Freqtrade量化交易之config.json 基础入门与初始化
javascript·数据库·python·mysql·算法·json·区块链
~|Bernard|6 小时前
在 PyCharm 里怎么“点鼠标”完成指令同样的运行操作
算法·conda
战术摸鱼大师6 小时前
电机控制(四)-级联PID控制器与参数整定(MATLAB&Simulink)
算法·matlab·运动控制·电机控制
Christo36 小时前
TFS-2018《On the convergence of the sparse possibilistic c-means algorithm》
人工智能·算法·机器学习·数据挖掘
阿巴Jun7 小时前
【数学】线性代数知识点总结
笔记·线性代数·矩阵
好家伙VCC7 小时前
数学建模模型 全网最全 数学建模常见算法汇总 含代码分析讲解
大数据·嵌入式硬件·算法·数学建模
liulilittle8 小时前
IP校验和算法:从网络协议到SIMD深度优化
网络·c++·网络协议·tcp/ip·算法·ip·通信
bkspiderx10 小时前
C++经典的数据结构与算法之经典算法思想:贪心算法(Greedy)
数据结构·c++·算法·贪心算法
中华小当家呐11 小时前
算法之常见八大排序
数据结构·算法·排序算法
沐怡旸12 小时前
【算法--链表】114.二叉树展开为链表--通俗讲解
算法·面试