LeetCode算法题目:Search a 2D Matrix
来源:互联网 发布:宜宾市行知中学周圣川 编辑:程序博客网 时间:2024/06/08 00:45
题目:
Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:
Integers in each row are sorted from left to right.
The first integer of each row is greater than the last integer of the previous row. For example,
Consider the following matrix:[ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50]]
Given target = 3, return true.
分析:
因为矩阵是行有序并且列有序,查找只需要先按行查找,定位出在哪一行之后再进行列查找即可,所以就是进行两次二分查找。时间复杂度是O(logm+logn),空间上只需两个辅助变量,因而是O(1)。
代码:
// LeetCode, Search a 2D Matrix// 时间复杂度O(logn),空间复杂度O(1)class Solution {public: bool searchMatrix(const vector<vector<int>>& matrix, int target) { if (matrix.empty()) return false; const size_t m = matrix.size(); const size_t n = matrix.front().size(); int first = 0; int last = m * n; while (first < last) { int mid = first + (last - first) / 2; int value = matrix[mid / n][mid % n]; if (value == target) return true; else if (value < target) first = mid + 1; else last = mid; } return false; }};
0 0
- LeetCode算法题目:Search a 2D Matrix
- LeetCode算法题目:Search a 2D Matrix II
- [leetcode][Search] Search a 2D Matrix
- leetcode 240 Search a 2D Matrix II java 算法
- LeetCode: Search a 2D Matrix
- LeetCode Search a 2D Matrix
- [Leetcode] Search a 2D Matrix
- LeetCode : Search a 2D Matrix
- [LeetCode] Search a 2D Matrix
- Leetcode 74 Search a 2D Matrix
- leetcode 90: Search a 2D Matrix
- [LeetCode]Search a 2D Matrix
- [Leetcode] Search a 2-D matrix
- [Leetcode]Search a 2D Matrix
- [leetcode]Search a 2D Matrix
- LeetCode-Search a 2D Matrix
- [leetcode] Search a 2D Matrix
- LeetCode - Search a 2D Matrix
- 弦图判断
- iOS——消息传递
- Git教程
- 安装Ubuntu12.0.4LTS/14.045 LTS 编译Android6.0/7.0环境
- 二叉树的构造及常用方法
- LeetCode算法题目:Search a 2D Matrix
- 机器学习-->深度学习-->人工神经网络
- 微信小程序带字母滑动的listview----项目实战
- 树、森林及二叉树的相互转换
- [设计模式]装饰者模式(Decorator)
- Microsoft Google Facebook等公司保证代码质量的方法
- 补作业 第五次实验 项目4
- 链式存储的字符串的基本操作(学习历程)
- 机器学习(包括深度神经网络)python开发环境搭建(超详细)(适合新手)