1. 程式人生 > >240. Search a 2D Matrix II(搜尋二維矩陣之二)

240. Search a 2D Matrix II(搜尋二維矩陣之二)

這道題沒什麼好說的,沒有太大的難度,很快就AC了。簡單說一下思路:觀察可知越往右下數越大,加上每一行最後一個數是該行最大值,因此可以根據列值減少搜尋的列數。定義 i 為矩陣的行,j 為矩陣的列,初始化 i 為0,j 為最後一列。若目標值大於當前matrix [ i ][ j ] 時,說明此行不可能比目標值大,因此 i+1;若小於,則目標值必然不在此列,因此 j-1;若等於則輸出。

class Solution {
public:
    bool searchMatrix(vector<vector<int>>& matrix, int target) {
        if (matrix.size() == 0)
            return false;
        int row = matrix.size(), col = matrix[0].size();
        int i = 0, j = col - 1;
        while (i < row && j >= 0) {
            if (matrix[i][j] == target)
                return true;
            else if (matrix[i][j] > target)
                j--;
            else
                i++;
        }
        return false;
    }
};