Leetcode 74. Search a 2D Matrix
2016-01-24 05:29
459 查看
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 method:
1
The same question for the binary search., for this question, the middle element is int the middle of the array. We can think the two-dimensional array is a sorted array, Time complexity is O(log(m * n))
2
From the right up element and move until to the left end element. This may be called chain search for the 2-dimension sorted array. O(m * n)
public class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
if(matrix==null || matrix.length==0 || matrix[0].length==0)
return false;
int m = matrix.length;
int n = matrix[0].length;
int start = 0;
int end = m*n-1;
while(start<=end){
int mid=(start+end)/2;
int midX=mid/n;
int midY=mid%n;
if(matrix[midX][midY]==target)
return true;
if(matrix[midX][midY]<target){
start=mid+1;
}else{
end=mid-1;
}
}
return false;
}
}
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 method:
1
The same question for the binary search., for this question, the middle element is int the middle of the array. We can think the two-dimensional array is a sorted array, Time complexity is O(log(m * n))
2
From the right up element and move until to the left end element. This may be called chain search for the 2-dimension sorted array. O(m * n)
public class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
if(matrix==null || matrix.length==0 || matrix[0].length==0)
return false;
int m = matrix.length;
int n = matrix[0].length;
int start = 0;
int end = m*n-1;
while(start<=end){
int mid=(start+end)/2;
int midX=mid/n;
int midY=mid%n;
if(matrix[midX][midY]==target)
return true;
if(matrix[midX][midY]<target){
start=mid+1;
}else{
end=mid-1;
}
}
return false;
}
}
相关文章推荐
- Leetcode 81. Search in Rotated Sorted Array II
- 2016感怀
- Leetcode 33. Search in Rotated Sorted Array
- 小娜学法(14): 立善法于天下,则天下治
- mac OS X Yosemite (10.10.5) 下 安装vim 7.4笔记
- Leetcode -229. Majority Element
- LRU Cache
- mysql外键约束
- java解析xml文件(三种方式-(dom ,jdom ,dom4j)
- java模拟并发请求
- Java连接各种数据库
- java中IO流的学习笔记(3、转换流的写入和读取)
- MVP
- Class-dump安装和简单使用
- PHP 系统变量 环境变量
- php mysql数据库操作mysql和pdo的实现
- linux中系统性能检测工具pidstat学习
- Maximum Size Subarray Sum Equals k -- LeetCode
- shell vs python脚本监控http请求
- Common Element in Two Sorted Sets