题目描述
解题思路
二分查找
代码
public boolean searchMatrix(int[][] matrix, int target) {int m = matrix.length;//判断是否为空数组if(m==0) return false;int n = matrix[0].length;int idx,idxElement;int left=0,right=m*n-1;//注意这里要写的是<=while(left<=right){//计算中间值idx = (left+right)/2;//在原数组中对应的位置idxElement=matrix[idx/n][idx%n];//二分查找if(idxElement==target){return true;}else if(idxElement<target){left=idx+1;}else{right=idx-1;}}return false;}
复杂度分析
- 时间复杂度 : 由于是标准的二分查找,时间复杂度为O(\log(m n))。
- 空间复杂度 : O(1)。
