【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;
    }
相关推荐
倒头就睡的小比特14 小时前
算法竞赛C++常用的STL
c++·算法
小羊没烦恼!14 小时前
初探性能优化——2个月到4小时的性能提升
java·开发语言·windows·算法·c#
猎头南楼15 小时前
知识社区推荐系统实践:新用户冷启动与长短期兴趣建模的挑战 资深推荐算法工程师
人工智能·深度学习·算法·机器学习
旖旎夜光16 小时前
力控面试题 01.01: 判定字符是否唯一(位运算) —— 题解
c++·学习·算法·leetcode·力控
wzdark16 小时前
大规模并行计算中的负载均衡算法研究4
算法
Because_of_Her117 小时前
并查集-听课笔记
笔记·算法·并查集
码流子17 小时前
高速公路安全监测实践:碰撞监测预警+物联网底座,从感知到处置的闭环
大数据·人工智能·物联网·算法·架构
another heaven17 小时前
【算法/C++ MD5算法能否逆解码?原理、C++实现与同类哈希算法对比】
c++·算法·哈希算法
wzdark17 小时前
从算法设计模式看编程思维的抽象能力4
算法
2601_9622186118 小时前
万象生鲜系统称重自动多退少补算法解决生鲜非标品痛点
大数据·数据库·人工智能·python·算法