题解 | #二维数组中的查找#

二维数组中的查找

https://www.nowcoder.com/practice/abc3fe2ce8e146608e868a70efebf62e

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param target int整型 
 * @param array int整型二维数组 
 * @param arrayRowLen int array数组行数
 * @param arrayColLen int* array数组列数
 * @return bool布尔型
 */
bool Find(int target, int** array, int arrayRowLen, int* arrayColLen ) {
    int colLen = *arrayColLen; // 获取二维数组的列数
    if(target < array[0][0] || target > array[arrayRowLen - 1][colLen - 1]) return false;
    
    int row = 0, col = colLen - 1;
    while(row <= arrayRowLen - 1 && col >= 0) {
        if(array[row][col] < target) row++; // 如果右上角的元素比target更小,说明目标元素在下一行及以下
        else if(array[row][col] > target) col--; // 如果右上角元素比target更大,说明目标元素在前一列或之前
        else return true; // 找到目标元素
    }
    
    return false;
}

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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