Search a 2D Matrix----easy
来源:互联网 发布:视频相册制作软件 编辑:程序博客网 时间:2024/06/06 09:02
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
.
题目不难代码如下
public class Sa2M {public static void main(String[] args){//int matrix[][] = {{1,3,5,7},{10,11,16,20},{23,30,34,50}};int matrix[][] = {{1,3}};int target = 2;System.out.println(searchMatrix(matrix,target));}public static boolean searchMatrix(int[][] matrix, int target) {int m,n;m = matrix.length;n = matrix[0].length;int mid;int low,high;for(int i=0;i<m;i++){if(target>= matrix[i][0] && target<= matrix[i][n-1]){low = 0;high = n-1;while(low<=high){mid = (low +high)/2;if(matrix[i][mid] < target){low = mid+1;}else if(matrix[i][mid] >target){high = mid-1;}else{return true;}}}}return false; }}遍历二维数组行,找到目标值所在区间,然后二分查找
太久没做题什么都慢,二分的时候low和high的更新中直接赋值为mid,结果发现在low和high相差为1的时候循环无法结束了
更新的时候mid值已经做过判断,新区间内不应包含mid值,同时在low和high相差1时再次进入循环两值相等,再再次就无法进入循环退出了
0 0
- Search a 2D Matrix----easy
- Search a 2D Matrix
- Search a 2D Matrix
- Search a 2D Matrix
- Search a 2D Matrix
- Search a 2D Matrix
- Search a 2D Matrix
- Search a 2D Matrix
- Search a 2D Matrix
- Search a 2D Matrix
- Search a 2D Matrix
- Search a 2D Matrix
- Search a 2D Matrix
- Search a 2D Matrix
- Search a 2D Matrix
- Search a 2D Matrix
- Search a 2D Matrix
- Search a 2D matrix
- 构造函数的显式、隐式转换--explicit
- 安装AndroidStudio
- 获取http中的XML数据
- BZOJ 1406 AHOI2007 密码箱 数论
- python数据类型
- Search a 2D Matrix----easy
- Annotation
- LeetCode OJ 之 Edit Distance (编辑距离)
- Fast Rendering News Feed on Android
- 新华龙电子推出最新网络开发板(W5100&W5500方案)
- 漫谈程序员系列:请区别对待女程序员
- 找到右下角弹广告的真凶
- hdu 1159 Common Subsequence (lcs)
- hdu 3455 Leap Frog