题解 | 二维数组中的查找 注意这个思路二分法 一开始没想明白
二维数组中的查找
https://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e
class Solution {
public:
/**
* 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
*
*
* @param target int整型
* @param array int整型vector<vector<>>
* @return bool布尔型
*/
bool Find(int target, vector<vector<int> >& array) {
// write code here
//想不出最优解法可以试试稍暴力的方法 比如直接两个for循环 或者每一行进行二分
//这个二维数组本身相当一个二分查找数组 关键在于找到中枢
//左下角就是中枢 右边大于 上边小于
//疑问 只往上走或者只往右走吗 其他情况会不会往左走或者往下走? 不会 因为二分 中枢 确定比他大 就往右走 因为中枢上面的都比他小,所以确定列了就不会往左走。比它小 往上走 ,不会再往右走 因为右边的都比它大。
int rowsize=array.size();
int colsize=array[0].size();
int x=rowsize-1,y=0;
while(x>=0&&x<rowsize&&y>=0&&y<colsize){
if(array[x][y]==target)return true;
else if(array[x][y]>target)x--;
else y++;
}
return false;
}
};
查看11道真题和解析
携程工作强度 160人发布