編寫一個高效的算法來搜索 m x n 矩陣 matrix 中的一個目標值 target。該矩陣具備如下特性:算法
每行的元素從左到右升序排列。
每列的元素從上到下升序排列。
示例:spa
現有矩陣 matrix 以下:code
[
[1, 4, 7, 11, 15],
[2, 5, 8, 12, 19],
[3, 6, 9, 16, 22],
[10, 13, 14, 17, 24],
[18, 21, 23, 26, 30]
]
給定 target = 5,返回 true。blog
給定 target = 20,返回 false。get
初始座標 $(i,j)$ 設定爲最右上角,若是 $target<mat[i][j]$,那麼座標往左平移一格,由於這一列上的數字都大於 $target$;若是 $target>mat[i][j]$,則座標往下平移一格,由於這一行上的數字都小於 $target$。io
AC代碼:class
class Solution { public: bool searchMatrix(const vector<vector<int>>& mat,int x) { if(mat.empty()) return 0; int i=0, j=mat[0].size()-1; while(i<mat.size() && j>=0) { if(x==mat[i][j]) return 1; else if(x<mat[i][j]) j--; else i++; } return 0; } };