题目
文章来源:https://www.toymoban.com/news/detail-674506.html
方法一:暴力双for查找
public boolean searchMatrix(int[][] matrix, int target) {
for (int[] row : matrix) {
for (int element : row) {
if (element == target) {
return true;
}
}
}
return false;
}
方法二:二分查找,对每二维数组进行拆分,一行一行的进行二分查找
public boolean searchMatrix(int[][] matrix, int target) {
for(int i = 0 ; i<matrix.length;i++){
boolean isTrue = search(matrix[i],target);
if(isTrue) return true;
}
return false;
}
//二分查找方法
public boolean search(int[] nums,int target){
int begin = 0 ;//二分起点
int end = nums.length-1;//二分末尾点
while(begin <= end){
int mid = (end - begin)/2 + begin; //取中间点下标
int midNum = nums[mid];//中间元素
//判断中间元素与target大小
if(target == midNum) return true;//如果中间元素等于目标元素 直接返回结果
else if(target > midNum ) begin = mid+1; //如果中间元素小于目标值 说明寻找元素肯定在mid+1 , end区间 更新下次起点
else if(target < midNum ) end = mid-1;//同理
}
//循环完没有找到mid元素 说明不存在target
return false;
}
方法三:列倒序Z字形查找
//关键在于这个判断
if(matrix[row][col] > target) col --;//若该位置的元素>目标元素,则往左移动一位
else if(matrix[row][col] < target) row ++;//若该位置的元素<目标元素,则往下移动一位
else return true;//若满足相等的条件 则返回true
文章来源地址https://www.toymoban.com/news/detail-674506.html
public boolean searchMatrix(int[][] matrix, int target) {
int m = matrix.length;
int n = matrix[0].length;
int row = 0;//行
int col = n - 1; //列
while(row < m && col>=0){
if(matrix[row][col] > target) col --;//若该位置的元素>目标元素,则往左移动一位
else if(matrix[row][col] < target) row ++;//若该位置的元素<目标元素,则往下移动一位
else return true;//若满足相等的条件 则返回true
}
return false;
}
到了这里,关于【LeetCode-中等题】240. 搜索二维矩阵 II的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!