法一: 双指针
class Solution {
public:
bool findNumberIn2DArray(vector<vector<int>>& matrix, int target) {
if(matrix.size()==0 || matrix[0].size() == 0)
return false;
int m = matrix.size(), n = matrix[0].size(), i, j;
i = 0, j = n-1;
while(i<m && j>=0)
{
if(matrix[i][j] < target)
i++;
else if(matrix[i][j] > target)
j--;
else
return true;
}
return false;
}
};
总结:
- 双指针与方向数组间的小关系
- 双指针 适用于 两个或两个以下方向上的变向(一上一左,同左同右,两侧汇合)
- 方向数组 适用于 多个方向上的变向(四方向八方向)