【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));
    }
}
相关推荐
papership34 分钟前
【入门级-算法-6、排序算法: 插入排序】
数据结构·算法·排序算法
HAH-HAH44 分钟前
【蓝桥杯 2024 国 Java A】粉刷匠小蓝
c++·学习·数学·算法·职场和发展·蓝桥杯·组合数学
hweiyu002 小时前
C++设计模式,高级开发,算法原理实战,系统设计与实战(视频教程)
c++·算法·设计模式
大千AI助手2 小时前
粒子群优化(PSO)算法详解:从鸟群行为到强大优化工具
人工智能·算法·优化算法·pso·粒子群优化
我叫汪枫3 小时前
C语言深度入门系列:第十一篇 - 动态内存管理与数据结构:程序世界的高效算法大师
c语言·数据结构·算法
Li_7695323 小时前
优选算法100 题 ——1 双指针
算法
77qqqiqi3 小时前
算法——数学基础
算法
啊?啊?3 小时前
7 排序算法通关指南:从 O (n²)(选择 / 冒泡)到 O (nlogn)(快排 / 归并)+ 计数排序
数据结构·算法·排序算法
张较瘦_3 小时前
[论文阅读] 算法 | 抗量子+紧凑!SM3-OTS:基于国产哈希算法的一次签名新方案
论文阅读·算法·哈希算法
芒克芒克3 小时前
LeetCode 面试经典 150 题:多数元素(摩尔投票法详解 + 多解法对比)
算法·leetcode·面试