240. Search a 2D Matrix II(搜尋二維矩陣之二)
阿新 • • 發佈:2019-02-02
這道題沒什麼好說的,沒有太大的難度,很快就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; } };