题目的链接在这里:https://leetcode-cn.com/problems/search-a-2d-matrix-ii/
题目大意
编写一个高效的算法来搜索 m x n 矩阵 matrix 中的一个目标值 target 。该矩阵具有以下特性:每行的元素从左到右升序排列。
每列的元素从上到下升序排列。
一、示意图
二、解题思路
/**
*这道题的技巧就是 从右上角开始查找,如当前值大于待搜索值,那就向左移动一位
* 如果当前值小于带搜索值 就向下移动一位。如果最终移动到左下角时仍不等于
* 待搜索值,就表示不存在
*/
数据结构
代码如下:
class Solution {
/**
*这道题的技巧就是 从右上角开始查找,如当前值大于待搜索值,那就向左移动一位
* 如果当前值小于带搜索值 就向下移动一位。如果最终移动到左下角时仍不等于
* 待搜索值,就表示不存在
*/
public boolean searchMatrix(int[][] matrix, int target) {
//当然这种题有暴力检索的方法 但是不太好
//为什么选右上角作为起点是因为右上角能出去的两个点是代表不同的数值方向的 左移是比他小的,下移是比他大的
//不像左上 两边的移动方向都是错误的
int n=0;
int m=matrix[0].length-1;
while (n<matrix.length&&m>=0){
//开始进行判断
if(target==matrix[n][m])
return true;
else if(target>matrix[n][m]){
//说明目标值更大 就需要向下移动
n++;
}
else if(target<matrix[n][m]){
//就需要想左移动了
m--;
}
}
//超出范围就变成了false
return false;
}
}