题解 | #二维数组中的查找#
二维数组中的查找
http://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e
在遍历查找的基础上加了一条判断target是否小于下一行的首元素,如果小于直接返回:
if ((i + 1) < array.size() && array[i + 1][0] > target)
return false;
另外本题需要注意一下vector的判空条件,否则可能有访问越界的问题。完整代码如下:
class Solution {
public:
bool Find(int target, vector<vector<int> > array) {
for (int i = 0; i < array.size(); i++) {
if (array.size() < 1 || array[i].size() < 1)
return false;
for (int j = 0; j < array[i].size(); j++) {
if (target == array[i][j])
return true;
if (array[i][j] > target)
break;
}
if ((i + 1) < array.size() && array[i + 1][0] > target)
return false;
}
return false;
}
};