Description:
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.
问题描述:
给定矩阵,从左到右,从上到下,元素逐渐增大。
解法一:
思路:
基本二分法思路,考点在于把矩阵元素铺开成数组之间的转换关系(按列铺开)
Code:
public class Solution {
public boolean searchMatrix(
int[][] matrix,
int target) {
if(matrix ==
null || matrix.length ==
0){
return
false;
}
int start =
0, rows = matrix.length, cols = matrix[
0].length;
int end = rows * cols -
1;
while(start <=
end){
int mid = start + (
end - start)/
2;
if(matrix[
mid / cols][
mid % cols] == target){
return
true;
}
if(matrix[
mid / cols][
mid % cols] < target){
start =
mid +
1;
}
else{
end =
mid -
1;
}
}
return
false;
}
}
转载请注明原文地址: https://ju.6miu.com/read-6635.html