美文网首页程序员
剑指1:二维数组中的查找

剑指1:二维数组中的查找

作者: 小蜜蜂_Jade | 来源:发表于2020-06-16 17:29 被阅读0次

二维数组中的查找

  • 题目描述

在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。

题目地址:
https://github.com/JacksonChenYF/Algorithm/blob/master/src/com/cyf/niukeoffer/Find.java

  • 思路
    观察找出特殊点(即该点(同一行最大&&同一列最小 或者 同一列最大,同一行最小))设置指针指示当前元素位置,判断后决定向那个方向移动
    时间复杂度O(M+N):即走到对角线

  • 代码实现

public boolean Find(int target, int[][] array) {
    if (array == null || array.length == 0 || array[0].length == 0) {
        return false;
    }

    int rows = array.length;//行数
    int cols = array[0].length;//列数

    //指针[下标]  左下角点
    int r = rows - 1;
    int c = 0;

    while (r >= 0 && c < cols) {
        if (target == array[r][c]) {
            return true;
        } else if (target > array[r][c]) {
            c++;
        } else {
            r--;
        }
    }
    return false;
}

相关文章

网友评论

    本文标题:剑指1:二维数组中的查找

    本文链接:https://www.haomeiwen.com/subject/txmrxktx.html