首页 > 代码库 > LeetCode-Search a 2D Matrix
LeetCode-Search a 2D Matrix
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 Solution { public boolean searchMatrix(int[][] matrix, int target) { boolean found=false; if(matrix==null){ return found; } int m=matrix.length; int n=matrix[0].length; int upRow=0; int downRow=m-1; while(upRow<=downRow){ if(target<=matrix[upRow][n-1]){ found=binarySearch(matrix, upRow, target); break; } else if(target>=matrix[downRow][0]){ found=binarySearch(matrix, downRow, target); break; } else{ upRow++; downRow--; } } return found; } public boolean binarySearch(int[][]matrix, int row, int target){ int m=matrix.length; int n=matrix[0].length; int left=0; int right=n-1; boolean found=false; while(left<=right){ int mid=left+(right-left)/2; if(matrix[row][mid]==target){ found=true; break; } else if(matrix[row][mid]<target){ left=mid+1; } else{ right=mid-1; } } return found; }}
LeetCode-Search a 2D Matrix
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。