考察知识点:数组

题目分析:

观察整个数组:

发现从9开始向右或向下,值都会变小;从1开始向上或向左,值都会变大;

而从7开始向左变大,向下变小;从3开始向上变大,向右变小;我们可以利用这个特征, 从矩阵的右上角或左下角开始,当遍历到的值比目标值大时,将i或j指针做相应的移动。如果i或j出界,那么就说明没有这个值。

所用编程语言:C++

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param matrix int整型vector<vector<>> 
     * @param target int整型 
     * @return bool布尔型
     */
    bool searchMatrix(vector<vector<int> >& matrix, int target) {
        // write code here
        int size = matrix[0].size();
        int i = 0, j = size - 1;
        while (matrix[i][j] != target) {
            if (matrix[i][j] > target) i++;
            else j--;
            if (i == size || j == -1) return false;
        }
        return true;
    }
};