【力扣】240.搜索二维矩阵

题目意思是从该矩阵之中查找出是否有和target一样的值,若有则返回true,无则返回false。这里我用的是java。总共有三种方法,分别是暴力解题法(能过),二分查找法(就是将二维数组拆分成m个二维数组),Z字形查找法。重点是讲Z字形查找法,因为在了解该方法之后我觉得自己像傻逼一样,笨,哈哈哈,开个玩笑。这里代码我是参考的官方。

法三:

Z字形解题法原理就是二叉树,在这里的话我们是从该二维数组的最右边(假设为matrixxy)开始查的。根据题目意思,我们现在规定顶点是最小的,下边的结点比上面的大,同时左边的比右边的小。回到题目本身,当目标元素比matrixxy大时,此时我们应该要向下开始寻找y--,因为题目中从左至右和从上至下都是升序排列的,现在我们知道了目标元素比matrixxy大时,那就不可能往左边寻找了。如果想不通那就请在想一想,加油嗷。同理,x--的情况就是目标元素比matrixxy小时。

代码如下:

java 复制代码
class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        //Z字形查找
        int m=matrix.length,n=matrix[0].length;
        int x=0,y=n-1;
        while(x<m&&y>=0){
            if(matrix[x][y]==target) return true;
            else if(matrix[x][y]>target){
                y--;
            }else{
                x++;
            }
        }
        return false;
    }
}

法一和法二:

二分查找,就是嗯,很简单,看代码吧

java 复制代码
//1、法一
class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        int n=matrix.length,m=matrix[0].length;
       //用for-each循环
       for(int[] row:matrix){
           for(int element:row){
               if(element==target) return true;
           }
       }
        return false;
    }
}
java 复制代码
class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        //2.二分查找法
        for(int[] row:matrix){
            int index=search(row,target);
            if(index>=0) return true;
        }
        return false;
    }
    public int search(int[] nums,int target){
        int low=0,high=nums.length-1;
        while(low<=high){
            int mid=(high-low)/2+low;
            int num=nums[mid];
            if(num==target) return mid;
            else if(num>target) high=mid-1;
            else low=mid+1;
        }
        return -1;
    }
}

生活愉快哦,祝你刷题快乐~

相关推荐
KaMeidebaby1 小时前
卡梅德生物技术快报|PD1 单克隆抗体定制配套 N 糖全谱质控开发
前端·人工智能·算法·数据挖掘·数据分析
8Qi82 小时前
LeetCode 235. 二叉搜索树的最近公共祖先(LCA)
算法·leetcode·二叉树·递归·二叉搜索树·lca·迭代
bIo7lyA8v2 小时前
算法稳定性分析中的随机扰动建模的技术8
算法
科研online3 小时前
基于多源数据和XGBoost-SHAP分析中国大陆绿地碳汇空间变异影响因素的非线性相关性与尺度差异
算法·学习方法
Cthy_hy3 小时前
拓扑排序超详解:原理 + Kahn 贪心算法
python·算法·贪心算法
三品吉他手会点灯3 小时前
C语言学习笔记 - 43.运算符与表达式 - 运算符1 - 运算符的分类和简单介绍
c语言·笔记·学习·算法
VkN2X2X4b4 小时前
算法复杂度的实验验证与误差分析的技术8
算法
其利天下技术4 小时前
风扇灯无刷电机自适应算法实战指南
算法·cocos2d·无刷电机自适应算法·bldc驱动自适应算法·其利无刷电机驱动算法
8Qi84 小时前
LeetCode 494:目标和(Target Sum)—— 题解 ✅
算法·leetcode·职场和发展·动态规划·01背包
hujinyuan201605 小时前
2026年3月 中国电子学会青少年软件编程(Python)三级考试试卷 真题及答案
java·python·算法