首页 > 其他分享 >#yyds干货盘点# LeetCode面试题:搜索二维矩阵

#yyds干货盘点# LeetCode面试题:搜索二维矩阵

时间:2023-04-12 23:33:01浏览次数:36  
标签:yyds 面试题 target int mid high low LeetCode matrix

1.简述:

编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值。该矩阵具有如下特性:

每行中的整数从左到右按升序排列。

每行的第一个整数大于前一行的最后一个整数。

 

示例 1:

输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 3

输出:true

示例 2:

输入:matrix = [[1,3,5,7],[10,11,16,20],[23,30,34,60]], target = 13

输出:false

2.代码实现:

class Solution {
    public boolean searchMatrix(int[][] matrix, int target) {
        int rowIndex = binarySearchFirstColumn(matrix, target);
        if (rowIndex < 0) {
            return false;
        }
        return binarySearchRow(matrix[rowIndex], target);
    }

    public int binarySearchFirstColumn(int[][] matrix, int target) {
        int low = -1, high = matrix.length - 1;
        while (low < high) {
            int mid = (high - low + 1) / 2 + low;
            if (matrix[mid][0] <= target) {
                low = mid;
            } else {
                high = mid - 1;
            }
        }
        return low;
    }

    public boolean binarySearchRow(int[] row, int target) {
        int low = 0, high = row.length - 1;
        while (low <= high) {
            int mid = (high - low) / 2 + low;
            if (row[mid] == target) {
                return true;
            } else if (row[mid] > target) {
                high = mid - 1;
            } else {
                low = mid + 1;
            }
        }
        return false;
    }
}

标签:yyds,面试题,target,int,mid,high,low,LeetCode,matrix
From: https://blog.51cto.com/u_15488507/6186362

相关文章

  • Leetcode 2. 两数相加
    这道题让我想起了acwing里的高精度加法,因为这里的加法也是超过100位了。于是套着模板写了一下,然后看了一下评论区,发现链表再套vector属于是脱裤子放屁了/***Definitionforsingly-linkedlist.*structListNode{*intval;*ListNode*next;*ListNod......
  • 3-面试题(python)
    1、列表和字典的区别字典是{}表示的,列表是[]表示的;字典是无序的不能通过索引来取值,列表是有序的;字典是以键值对的形式存在的,列表相当于一个容器,里面可以放置任何的数据类型; 2、python中的数据类型string、number、tuple、list、dictionary、set;3、python怎么将一个对象转......
  • try-finally【面试题】
    首先来看一段代码publicStringmethod111(){Stringret="hello";try{returnret;}finally{ret="world";}}最终返回什么呢?可能你知道,但是相信有一部分人是懵了的,因为我们都知道try-finally代码中finally模块最终一定会执行。下面咱们通过ja......
  • 字符串拼接【面试题】
    先来看一段代码publicclassTest{publicStringmethod1(){Stringret="";for(inti=0;i<100000;i++){ret=ret+"ok";}returnret;}publicStringmethod2(){StringBuilderret=newStringB......
  • #yyds干货盘点#Linux显示或管理路由表
    【功能说明】route命令可以显示或管理Linux系统的路由表,route命令设置的路由主要是静态路由。【路由的概念】计算机与计算机之间的数据传输必须得经由网络,而网络可以通过直接连接两台计算机的方式或者是以一个或一个以上的节点来构成。数据传输首先会通过源主机传送到一个网络节点,......
  • 2-面试题:python
    1、python对象的比较和拷贝?答:'=='操作符比较对象之间的值是否相等;'is'操作符比较的是对象的身份标识是否相等,即它们是否是同一个对象,是否指向同一个内存地址;比较操作符'is'的速度效率,通常优于'==';浅拷贝和深拷贝:浅拷贝,将原对象或原数组的引用直接赋值给新对象、新数组,新对象/......
  • 面试题:python
    列表和元组的区别列表是动态的,长度可变,可以对元素进行增、删、改操作;列表存储空间略大于元组,性能略逊于元组;元组是静态的,长度大小固定,不可以对元素进行增、删、改操作;元组相对于列表更加轻量级,性能稍优;字典和集合字典是有序的数据结构,而集合是无序的,其内部的哈希表存储结构,......
  • [C++]LeetCode1147. 段式回文
    [C++]LeetCode1147.段式回文题目描述Difficulty:困难RelatedTopics:贪心,双指针,字符串,动态规划,哈希函数,滚动哈希你会得到一个字符串text。你应该把它分成k个子字符串(subtext1,subtext2,…,subtextk),要求满足:subtexti是非空字符串所有子字符串的连接......
  • Rabin-Karp-leetcode187
    DNA序列 由一系列核苷酸组成,缩写为 'A', 'C', 'G' 和 'T'.。例如, "ACGAATTCCG" 是一个 DNA序列 。在研究 DNA 时,识别DNA中的重复序列非常有用。给定一个表示 DNA序列 的字符串 s ,返回所有在DNA分子中出现不止一次的 长度为 10 的序列(子字符串)。你可以按 ......
  • LeetCode 450.删除二叉搜索树的结点
    1.题目:给定一个二叉搜索树的根节点root和一个值key,删除二叉搜索树中的 key 对应的节点,并保证二叉搜索树的性质不变。返回二叉搜索树(有可能被更新)的根节点的引用。一般来说,删除节点可分为两个步骤:首先找到需要删除的节点;如果找到了,删除它。示例1:输入:root=[5,3,6,2,4,null,......