74. Search a 2D Matrix
来源:互联网 发布:it课程体系 编辑:程序博客网 时间:2024/06/08 00:49
LeetCode
- 题目地址:https://leetcode.com/problems/search-a-2d-matrix/#/description
- 问题描述&解题思路:给一个二维的数组,有以下两个属性:(1)下一行的第一个元素比这一行的第一个元素大(2)每行元素左边的比右边的小,给一个数target,判断是否在这个二维数组中。那么很简单地想到,就是先用二分在行中找,再用二分在列中找,但是这两个二分是有区别的,在行中找要找到行号n,使得n行第一个元素小于等于target,n+1行(如果n=size-1最后一行则不需要)的第一个元素大于target,因为行查找的是一个范围
[n行第一个元素,n+1行第一个元素) ,而列中查找则直接找到是否有target这个数字,即正常的二分。复杂度是O(logm+logn),其中是m*n的二维数组 - 代码如下:
class Solution {public: bool searchMatrix(vector<vector<int>>& matrix, int target) { if (matrix.size() == 0 || matrix[0].size() == 0) return false; int low = 0, high = matrix.size()-1, size = matrix.size(), row; //binary search for row while (low < high) { int mid = (low + high) / 2; if (matrix[mid][0] <= target && (mid == size - 1 || matrix[mid+1][0] > target)) break; else if (matrix[mid][0] > target) high = mid - 1; else low = mid + 1; } row = (low + high) / 2; //binary search for col int low2 = 0, high2 = matrix[low].size()-1; while(low2 <= high2) { int mid = (low2 + high2) / 2; if (matrix[row][mid] == target) return true; else if (matrix[row][mid] > target) high2 = mid - 1; else low2 = mid + 1; } 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
- 74. Search a 2D Matrix
- 74. Search a 2D Matrix
- Leetcode 74. Search a 2D Matrix
- [LeetCode]74. Search a 2D Matrix
- 74. Search a 2D Matrix LeetCode
- 74. Search a 2D Matrix
- 74. Search a 2D Matrix
- 74. Search a 2D Matrix
- [LeetCode]74. Search a 2D Matrix
- [LeetCode]74. Search a 2D Matrix
- 74. Search a 2D Matrix
- 74. Search a 2D Matrix
- leetcode 74. Search a 2D Matrix
- 自己js写的分页小工具供大家参考
- PreferenceActivity详解
- servlet的简单映射
- java基础13:I/O
- 在EditText中插入表情图片 (CharacterStyle&SpannableString)
- 74. Search a 2D Matrix
- ASP.Net Ajax框架 UpdatePanel控件 局部刷新
- 布局技巧:使用ViewStub
- Creating Android live wallpaper
- 旋转ImageView和TextView的效果实现
- RGB接口波形
- 4-12 二叉搜索树的操作集*
- 关于如何获得ListView中选中项的值
- week1