题解 | 二维数组中的查找 注意这个思路二分法 一开始没想明白

二维数组中的查找

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;
    }
};

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务