【Leetcode】Search a 2D Matrix
来源:互联网 发布:java 字符串分割 编辑:程序博客网 时间:2024/04/29 01:21
这道题是让在一个二维数组里搜索特定的数
数组的行和列元素全部递增且上一行的最后一个元素小于下一行的第一个元素
这道题首先先搜索行,看看元素在哪一行,然后再到那一行里去找
即先搜索A[target][0], 在搜索A[row][target]
详见代码
public boolean searchMatrix(int[][] matrix, int target) {if (matrix == null || matrix.length == 0 || matrix[0].length == 0)return false;int left = 0;int right = matrix.length - 1;while (left <= right) {int middle = (left + right) / 2;if (matrix[middle][0] == target)return true;if (matrix[middle][0] > target)right = middle - 1;elseleft = middle + 1;}int row = right;if (row < 0)return false;left = 0;right = matrix[0].length - 1;while (left <= right) {int middle = (left + right) / 2;if (matrix[row][middle] == target)return true;if (matrix[row][middle] > target)right = middle - 1;elseleft = middle + 1;}return false;}
首先在第一列中寻找元素在哪一行
int left = 0;int right = matrix.length - 1;while (left <= right) {int middle = (left + right) / 2;if (matrix[middle][0] == target)return true;if (matrix[middle][0] > target)right = middle - 1;elseleft = middle + 1;}
然后确定了行后再看元素在哪一列
int row = right;if (row < 0)return false;left = 0;right = matrix[0].length - 1;while (left <= right) {int middle = (left + right) / 2;if (matrix[row][middle] == target)return true;if (matrix[row][middle] > target)right = middle - 1;elseleft = middle + 1;}注意这里row一定要定义为right
因为当跳出循环的时候 left一定>right,所以right才是对应的行数。这个大家可以在纸上画一画就明白了。
0 0
- [leetcode][Search] 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] 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
- LeetCode:Search a 2D Matrix
- LeetCode 74: Search A 2D Matrix
- leetcode之Search a 2D Matrix
- js 正则表达式 验证字符串中必须包含字母和数字
- webview网页视图用css控制样式
- Linux C定时器使用
- Matlab precessing KTH by 00sequence.txt
- 非常好的一篇文章,Graph of Function
- 【Leetcode】Search a 2D Matrix
- SQL中索引的原理
- 判断互质数的方法
- 之前自己建的blog
- org/objectweb/asm/Type异常解决办法
- If a string is Palindromic
- Java获取本机IP列表的几种方法
- 常用的Javascript设计模式
- 老杜(杜昶旭)GRE填空笔记部分整理-by“ 1哥”+ TTC相关资料