LeetCode 240 Search a 2D Matrix II
2016-05-26 10:34
519 查看
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 in ascending from left to right.
Integers in each column are sorted in ascending from top to bottom.
For example,
Consider the following matrix:
Given target =
Given target =
[思路]
从右上角开始, 比较target 和 matrix[m]
的值. 如果matrix[m]
小于target, 则该行不可能有此数, 所以m++,如果matrix[m]
大于target,则该列不可能有此数,
所以n--,遇到边界则表明该矩阵不含target。感谢西施豆腐渣。查找从右上角开始处理,是个很妙的思路。时间复杂度为O(m+n)。
Integers in each row are sorted in ascending from left to right.
Integers in each column are sorted in ascending from top to bottom.
For example,
Consider the following matrix:
[ [1, 4, 7, 11, 15], [2, 5, 8, 12, 19], [3, 6, 9, 16, 22], [10, 13, 14, 17, 24], [18, 21, 23, 26, 30] ]
Given target =
5, return
true.
Given target =
20, return
false.
[思路]
从右上角开始, 比较target 和 matrix[m]
的值. 如果matrix[m]
小于target, 则该行不可能有此数, 所以m++,如果matrix[m]
大于target,则该列不可能有此数,
所以n--,遇到边界则表明该矩阵不含target。感谢西施豆腐渣。查找从右上角开始处理,是个很妙的思路。时间复杂度为O(m+n)。
public boolean searchMatrix(int[][] matrix, int target) { if (matrix.length == 0) return false; int m = 0, n = matrix[0].length - 1; while (m < matrix.length && n >= 0) { int x = matrix[m] ; if (target == x) return true; else if (target < x) n--; else m++; } return false; }
相关文章推荐
- Redis中实现查找某个值的范围
- 批量文件查找替换功能的vbs脚本
- WinForm实现按名称递归查找控件的方法
- 一个用vbs查找硬盘所有分区中的指定程序的代码
- 浅析Node.js查找字符串功能
- C++二分法在数组中查找关键字的方法
- C++中字符串查找操作的两则实例分享
- WinForm自定义函数FindControl实现按名称查找控件
- Shell脚本学习指南之查找与替换介绍
- php实现指定字符串中查找子字符串的方法
- C#查找对象在ArrayList中出现位置的方法
- jquery 查找新建元素代码
- Oracle 查找与删除表中重复记录的步骤方法
- SQL Server根据分区表名查找所在的文件及文件组实现脚本
- PHP学习之字符串比较和查找
- js实现的二分查找算法实例
- python查找指定具有相同内容文件的方法
- 二叉查找树的插入,删除,查找
- php查找指定目录下指定大小文件的方法
- php查找字符串出现次数的方法