Write an efficient algorithm that searches for a value in an m x n matrix. This matrix has the following properties:
For example,
Consider the following matrix:
[ [1, 3, 5, 7], [10, 11, 16, 20], [23, 30, 34, 50] ]
Given target = 3
, return true
.
這是一個楊氏矩陣,即每一行是遞增的,每一列也是遞增的。根據遞增性質,我們對每一行只搜索最後一個數,如果小於target那麼前往下一行,如果大於target那麼說明在這一行,於是前往前一列,直到找到該數。
class Solution { public: bool searchMatrix(vector> &matrix, int target) { int m = matrix.size(); int n = matrix[0].size(); for(int row = 0, col = n-1; row < m && col >= 0;) { if(matrix[row][col] < target) { row++; } else if(matrix[row][col] > target) { col--; } else return true; } return false; } };
這道題難度是medium,本來我打算先把easy難度的做完在考慮中等難度的。偶然看了七月算法的視頻(排序查找實戰),受益匪淺,決定對講過的例題進行鞏固消化,於是先把這道題做了,算法思路來源於曹博,學習了!