当前位置: 首页 > article >正文

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

  • 原题链接: 74. 搜索二维矩阵

1- 思路

二分

  • ① 实现一个二分函数
  • ② 对每行数组进行二分

2- 实现

⭐74. 搜索二维矩阵——题解思路

在这里插入图片描述

class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        for(int[] m:matrix){
            if(binarySearch(m,target)){
                return true;
            }
        }
        return false;
    }


    // 二分左区间
    public boolean binarySearch(int[] nums,int target){
        int left = 0;
        int right = nums.length-1;
        while(left<=right){
            int mid = (left+right)/2;
            if(nums[mid]<target){
                left = mid +1 ;
            }else if (nums[mid] > target){
                right = mid-1;
            }else{
                return true;
            }
        }
        return false;
    }
}

3- ACM 实现

public class binarySearch {


    public static boolean isHave(int[][] nums ,int target){
        for(int[] n:nums){
            if(binarySearch(n,target)){
                return true;
            }
        }
        return false;
    }

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

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String input = sc.nextLine();
        input = input.substring(2,input.length()-2);
        String[] parts = input.split("],\\[");
        String[] row = parts[0].split(",");

        int[][] nums = new int[parts.length][row.length];
        for(int i = 0 ; i < nums.length ;i++){
            String[] r = parts[i].split(",");
            for(int j = 0 ; j < r.length;j++){
                nums[i][j] = Integer.parseInt(r[j]);
            }
        }
        System.out.println("输入 target");
        int t = sc.nextInt();
        System.out.println("结果是"+isHave(nums,t));
    }
}


http://www.kler.cn/a/286276.html

相关文章:

  • 算法基础学习——快排与归并(附带java模版)
  • MySQL数据库(二)
  • hdfs:介绍三个脚本
  • 回顾:Maven的环境搭建
  • 关于el-table翻页后序号列递增的组件封装
  • Java面试题2025-并发编程基础(多线程、锁、阻塞队列)
  • SpringBoot——请求响应(简单参数、实体参数、数组集合参数、日期参数、JSON参数、路径参数、统一响应结果)
  • MySQL——事务与存储过程(一)事务管理(2)事务的提交
  • 商圣集团:数字创新,引领智慧生活新篇章
  • IM即时通讯软件,企业即时通讯系统就选WorkPlus
  • Unet改进17:添加ShuffleAttention||减少冗余计算和同时存储访问
  • 布偶猫应该怎么喂?希喂、交响乐金罐、尾巴生活彩虹泥适合布偶猫吗?
  • 将vue项目打包为安卓软件
  • 二元分类逻辑回归python代码实现
  • 【知识图谱】4、LLM大模型结合neo4j图数据库实现AI问答的功能
  • 【最全最详细】RPC与HTTP的区别
  • 信息学奥赛一本通:友好城市
  • 【bug记录6】css 写animation时,Safari浏览器最后一帧部分样式闪回
  • Adobe Acrobat Reader的高级功能详解
  • linux文件——用户缓冲区——概念深度探索、IO模拟实现
  • 【QNX+Android虚拟化方案】108 - emac0-phy 与 emac1-switch 双网卡兼容 方案实现
  • 【TiDB原理与实战详解】4、DM 迁移和TiCDC数据同步~学不会? 不存在的!
  • 推荐10个开源且实用的大模型
  • ComfyUI上手使用记录
  • 本地部署一个WordPress博客结合内网穿透实现异地远程访问本地站点
  • 【Mysql】面试官问Mybatis分页查询比较慢时你怎么优化?