每日一题:leetcode74.搜索二维矩阵
题目描述
题目分析
感觉这是一个放错标签的简单题。题目非常简单,思路应该很明确是二分,我很快写了一个(虽然不小心把!=打成==调试了一会)。
class Solution {public:bool searchMatrix(vector<vector<int>>& matrix, int target) {if (target < matrix[0][0] || target > matrix.back().back()) return false;auto result = row_lower_bound(matrix, 0, matrix.size(), target);if (result.first) {int x = result.second;const auto &vec = matrix[x];return lower_bound(vec.cbegin(), vec.cend(), target) != upper_bound(vec.cbegin(), vec.cend(), target);} else {return false;}}
private:pair<bool, int> row_lower_bound(vector<vector<int>> &matrix, int l, int r, int target) {;while (l < r) {int mid = (l + r) >> 1;if (target >= matrix[mid][0] && target <= matrix[mid].back()) return {true, mid};else if (target < matrix[mid][0]) r = mid;else l = mid + 1;}return {false, 0};}
};
但是当我看到题解的时候我觉得我对STL一无所知。虽然已经学习了lambda表达式,但是不太能够灵活运用。对于这种STL已经实现了的算法,有些细节可能不同,我们需要传递一个lambda表达式定制一下操作就可以了。
class Solution {public:bool searchMatrix(vector<vector<int>> matrix, int target) {auto row = upper_bound(matrix.begin(), matrix.end(), target, [](const int b, const vector<int> &a) {return b < a[0];});if (row == matrix.begin()) {return false;}--row;return binary_search(row->begin(), row->end(), target);}
};
题解还有另一种解法,是把二维数组看成一维的,虽然思路很好,但是复杂度应该是没什么变化的。一个是O(n)+O(m),一个是O(nm),而前者的可拓展性高一些
每日一题:leetcode74.搜索二维矩阵相关推荐
- leetcode刷题 74.搜索二维矩阵
题目分析 这是一道简单的查找二维矩阵的题目,所以解决这题有一个最简单的解法就是遍历二维数组即可:但是我们应该注意到题目中的每行整数从左到右是按升序排列的,第一个整数大于前一行的最后一个整数,介于此,我 ...
- leetcode74. 搜索二维矩阵(二分查找)
编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值.该矩阵具有如下特性: 每行中的整数从左到右按升序排列. 每行的第一个整数大于前一行的最后一个整数. 示例 1: 输入: matrix ...
- leetcode74. 搜索二维矩阵 ,你见过吗
编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值.该矩阵具有如下特性: 每行中的整数从左到右按升序排列. 每行的第一个整数大于前一行的最后一个整数. 示例 1: 输入: matrix ...
- 力扣算法题—074搜索二维矩阵
编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值.该矩阵具有如下特性: 每行中的整数从左到右按升序排列. 每行的第一个整数大于前一行的最后一个整数. 示例 1: 输入: matrix ...
- [Swift]LeetCode74. 搜索二维矩阵 | Search a 2D Matrix
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★ ➤微信公众号:山青咏芝(shanqingyongzhi) ➤博客园地址:山青咏芝(https://www.cnblog ...
- Python每日一练(20230307) 重复DNA序列、搜索二维矩阵、买卖股票的最佳时机IV
目录 1. 重复的DNA序列 ★★ 2. 搜索二维矩阵 ★★ 3. 买卖股票的最佳时机 IV ★★★
- LeetCode Algorithm 240. 搜索二维矩阵 II
240. 搜索二维矩阵 II Ideas 这题我记得在左神算法初级班里面有. 主要的思想就是定义两个指针row_index和col_index,从右上角开始逐个搜索. 如果matrix[row_ind ...
- python 搜索二维矩阵
搜索二维矩阵 编写一个高效的算法来判断 m x n 矩阵中,是否存在一个目标值.该矩阵具有如下特性: 每行中的整数从左到右按升序排列. 每行的第一个整数大于前一行的最后一个整数. 示例 1: 输入:m ...
- LeetCode 240. 搜索二维矩阵 II(二分查找 分治)
文章目录 1. 题目 2. 解题 2.1 从左下角或者右上角开始搜索 2.2 分治算法 1. 题目 编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target.该矩阵具有以 ...
最新文章
- Unsafe工具类的一些实用技巧,通往JVM底层的钥匙
- 【Java面试题】3 Java中使用final关键字修饰一个变量时,是引用不能变,还是引用的对象不能变?超详细解析...
- 用package.json配置NodeJS项目的模块声明
- 特斯拉:已在中国建立数据中心,以实现数据存储本地化
- 5、MySQL通用查询日志(General Query Log)
- 使用ASP.NET AJAX 1.0框架PreviewGlitz进行网页动画编程
- 一个备份MySQL数据库的简单Shell脚本(转)
- 与华为交换机用access_学校机房项目交换机的配置,理解这篇,交换机配置不再难...
- 计算机职称 计算机二级证,国家计算机二级证书含金量有多高
- Spring AOP失效之谜
- vs配置opencv
- 关于nagios监控系统添加主机和服务脚本
- uliso刻录系统到U盘
- 如何改变win10鼠标样式
- Nginx代理百度地图离线瓦片
- linux--磁盘配额
- 服务器装win7找不到硬盘驱动,Windows 7安装问题时找不到硬盘驱动器怎么办
- POS消费小票(签购单)上的“秘密”
- 平面几何----用梅涅劳斯定解20年一道高三数学模拟题
- 全国、省、市互联网普及率各区县电话用户数(2000至2020年)
热门文章
- 跳槽上班第一天的感受
- [python]-数据科学库Numpy学习
- Android学习拾遗
- [转]粵語固有辭彙與漢語北方話辭彙對照
- 【Unity】Update()和FixedUpdate()
- 计算机怎么查看U盘品牌,如何查看电脑u盘使用
- clistctrl控件最后插入在后面_老板让我把图片放到Excel表格中,批量插入效率高...
- php根据id查找条件怎么写_thinkphp where()条件查询
- linux查看进程运行日志文件,【Linux】常用指令、ps查看进程、kill杀进程、启动停止tomcat命令、查看日志、查看端口、find查找文件...
- oracle+trace参数设置,Oracle autotrace参数详解