【Hot100】LeetCode—240. 搜索二维矩阵 II

目录

  • [1- 思路](#1- 思路)
  • [2- 实现](#2- 实现)
    • [⭐240. 搜索二维矩阵 II------题解思路](#⭐240. 搜索二维矩阵 II——题解思路)
  • [3- ACM 实现](#3- ACM 实现)


1- 思路

二分法

  • 针对每行一维数组进行二分,对 target 进行二分

2- 实现

⭐240. 搜索二维矩阵 II------题解思路

java 复制代码
class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        for(int [] m:matrix){
            if(binarySearch(m,target)>=0){
                return true;
            }
        }
        return false;
    }

    private int binarySearch(int[] nums,int target){
        int left = 0;
        int right = nums.length-1;

        while(left<=right){
            int mid = (right+left)/2 ;
            if(nums[mid]==target){
                return mid;
            }else if(nums[mid] < target){
                left = mid+1;
            }else{
                right = mid-1;
            }
        }
        return -1;
    }
}

3- ACM 实现

java 复制代码
public class searchMatrix {
    
    private static boolean searchM(int[][] matrix,int target){
        for (int[] n:matrix){
            if(binarySearch(n,target)>=0){
                return true;
            }
        }
        return false;
    }

    private static int binarySearch(int[] nums,int target){
        int left = 0;
        int right = nums.length;
        while(left<=right){
            int mid = (left+right)/2;
            if(nums[mid] == target){
                return mid;
            }else if (nums[mid] > target){
                right = mid-1;
            }else{
                left = mid+1;
            }
        }
        return -1;
    }

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        System.out.println("输入数组行数m");
        int m = sc.nextInt();
        System.out.println("输入数组列数n");
        int n = sc.nextInt();
        int[][] nums = new int[m][n];
        for(int i = 0 ;i < m;i++){
            for(int j = 0 ; j < n;j++){
                nums[i][j] = sc.nextInt();
            }
        }
        System.out.println("输入target");
        int target = sc.nextInt();
        System.out.println("结果是"+searchM(nums,target));
    }
}
相关推荐
Tisfy2 分钟前
LeetCode 1458.两个子序列的最大点积:动态规划
算法·leetcode·动态规划·题解·dp
求梦8202 分钟前
【力扣hot100题】合并区间(9)
算法·leetcode·职场和发展
汽车仪器仪表相关领域17 分钟前
工况模拟精准检测,合规减排赋能行业 ——NHASM-1 型稳态工况法汽车排气检测系统项目实战经验分享
数据库·算法·单元测试·汽车·压力测试·可用性测试
chilavert31827 分钟前
技术演进中的开发沉思-299 计算机原理:数据结构
算法·计算机原理
C+-C资深大佬35 分钟前
C++逻辑运算
开发语言·c++·算法
天天进步20151 小时前
KrillinAI 源码级深度拆解二:时间轴的艺术:深入 KrillinAI 的字幕对齐与音频切分算法
算法·音视频
爱编程的小吴1 小时前
【力扣练习题】121. 买卖股票的最佳时机
算法·leetcode·职场和发展
生信大杂烩1 小时前
空间转录组分析新工具 | MEcell:自适应微环境感知建模,精准解析细胞身份!
算法·数据分析
kaikaile19951 小时前
计算向量x的功率谱密度
算法
ADI_OP1 小时前
ADAU1452的开发教程3:常规音频算法的开发(1)
算法·音视频·adi dsp中文资料·adi dsp开发教程