[LeetCode] 74. Search a 2D Matrix
来源:互联网 发布:lca算法建模 编辑:程序博客网 时间:2024/05/23 13:07
[LeetCode] 74. Search a 2D Matrix
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.
在一个行间有序,行与行也是有序的一个二维数组matrix中查找target。
思路: 现在第一列中二分查找target落在哪一行,然后再在行上二分查找target即可。
复杂度为O(log(m)+log(n)),本以为比把matrix当作一维数组直接二分效率要高,然后算了一下复杂度为O(log(m*n)) == O(log(m)+log(n))。
- -。
class Solution {public: bool searchMatrix(vector<vector<int>>& matrix, int target) { int leni = matrix.size(); if (leni == 0) { return false; } int lenj = matrix[0].size(); if (lenj == 0) { return false; } int lidx = 0; int ridx = leni-1; while (lidx < ridx) { int midx = (lidx+ridx)/2+1; if (target > matrix[midx][0]) { lidx = midx; } else if (target < matrix[midx][0]) { ridx = midx-1; } else { return true; } } int rowi = lidx; lidx = 0; ridx = lenj-1; while (lidx <= ridx) { int midx = (lidx+ridx)/2; if (target > matrix[rowi][midx]) { lidx = midx+1; } else if (target < matrix[rowi][midx]) { ridx = midx-1; } else { return true; } } return false; }};
0 0
- LeetCode 74. Search a 2D Matrix
- [LeetCode]74.Search a 2D Matrix
- LeetCode --- 74. Search a 2D Matrix
- [Leetcode] 74. Search a 2D Matrix
- [leetcode] 74.Search a 2D Matrix
- Leetcode 74. Search a 2D Matrix
- [LeetCode]74. Search a 2D Matrix
- 74. Search a 2D Matrix LeetCode
- [LeetCode]74. Search a 2D Matrix
- [LeetCode]74. Search a 2D Matrix
- leetcode 74. Search a 2D Matrix
- LeetCode 74. Search a 2D Matrix
- LeetCode 74. Search a 2D Matrix
- LeetCode *** 74. Search a 2D Matrix
- leetcode 74. Search a 2D Matrix
- LeetCode 74. Search a 2D Matrix
- leetcode-74. Search a 2D Matrix
- [leetcode] 74. Search a 2D Matrix
- 74. Search a 2D Matrix
- [学习交流] OC学习笔记之id类型及应用场景
- 网络编程
- gvim 操作
- [网易内推编程题] 地牢逃脱
- [LeetCode] 74. Search a 2D Matrix
- Android实现闹钟,通过AlarmManager+BroadcastReceiver(广播)
- PCA
- 学生选课抽签管理系统设计(一)
- 类的构造函数
- 类的加载与反射
- 析构函数
- 【寒江雪】2017.2.22
- 算法理解-遗传算法(Genetic Algorithm)(一个带计算过程的例子)