一、题目
  
二、解题思路
1.直接查找
利用for 循环嵌套的形式直接遍历整个矩阵来寻找目标值。
2.二分查找
矩阵中的每一行元素都以单调递增的形式有序排列。因此可对每行进行二分查找,寻找目标值。
三、Java代码
1.直接查找
class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
for(int[] row : matrix){
for(int i : row){
if(i==target)
return true;
}
}
return false;
}
}

2.二分查找
class Solution {
public boolean searchMatrix(int[][] matrix, int target) {
for(int[] row : matrix){
int result=search(row,target);
if(result>=0){
return true;
}
}
return false;
}
public int search(int[] rows,int target){
int left=0;
int right=rows.length-1;
while(left<=right){
int middle=left+(right-left)/2;
int row=rows[middle];
if(row==target){
return middle;
}
else if(row>target){
right=middle-1;
}
else
left=middle+1;
}
return -1;
}
}

来源:力扣(LeetCode) 链接:https://leetcode-cn.com/problems/search-a-2d-matrix-ii 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
|