【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;
    }
相关推荐
ysh988818 分钟前
PP-OCR:一款实用的超轻量级OCR系统
算法
遇雪长安34 分钟前
差分定位技术:原理、分类与应用场景
算法·分类·数据挖掘·rtk·差分定位
数通Dinner38 分钟前
RSTP 拓扑收敛机制
网络·网络协议·tcp/ip·算法·信息与通信
张人玉2 小时前
C# 常量与变量
java·算法·c#
weixin_446122463 小时前
LinkedList剖析
算法
百年孤独_4 小时前
LeetCode 算法题解:链表与二叉树相关问题 打打卡
算法·leetcode·链表
我爱C编程5 小时前
基于拓扑结构检测的LDPC稀疏校验矩阵高阶环检测算法matlab仿真
算法·matlab·矩阵·ldpc·环检测
算法_小学生5 小时前
LeetCode 75. 颜色分类(荷兰国旗问题)
算法·leetcode·职场和发展
运器1235 小时前
【一起来学AI大模型】算法核心:数组/哈希表/树/排序/动态规划(LeetCode精练)
开发语言·人工智能·python·算法·ai·散列表·ai编程
算法_小学生5 小时前
LeetCode 287. 寻找重复数(不修改数组 + O(1) 空间)
数据结构·算法·leetcode