您当前的位置: 首页 > 

IT之一小佬

暂无认证

  • 0浏览

    0关注

    1192博文

    0收益

  • 0浏览

    0点赞

    0打赏

    0留言

私信
关注
热门博文

二维数组中的查找

IT之一小佬 发布时间:2021-03-25 00:00:51 ,浏览量:0

二维数组中的查找

【题目】:

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

示例:

现有矩阵 matrix 如下:

[   [1,   4,  7, 11, 15],   [2,   5,  8, 12, 19],   [3,   6,  9, 16, 22],   [10, 13, 14, 17, 24],   [18, 21, 23, 26, 30] ] 给定 target = 5,返回 true。

给定 target = 20,返回 false。

【解题思路】:

每次从左下角或者右上角的数字开始进行比较(书中是从右上角开始)。这里我们选取左下角的数开始比较:

  • 如果左下角的数等于查找数, 则返回True;
  • 如果左下角的数大于查找数, 则比较同一列中的上一个数字;
  • 如果左下角的数小于查找数, 则比较同一行中的右边一位的数字;  

示例代码1:

def find(frid, number):
    if not frid:
        return False
    row, col = len(frid), len(frid[0])
    cur_i, cur_j = row - 1, 0
    while cur_i >= 0 and cur_j < col:
        if frid[cur_i][cur_j] == number:
            return True
        elif frid[cur_i][cur_j] > number:
            cur_i -= 1
        else:
            cur_j += 1
    return False


grid = [[1, 2, 8, 9],
        [2, 4, 9, 12],
        [4, 7, 10, 13],
        [6, 8, 11, 15]]
grid1 = []
number = 9
obj = find(grid, number)
print(obj)

运行结果:

示例代码2:

class Solution(object):
    def findNumberIn2DArray(self, matrix, target):
        """
        :type matrix: List[List[int]]
        :type target: int
        :rtype: bool
        """
        for i in matrix:
            if target in i:
                return True
        return False

 

关注
打赏
1665675218
查看更多评论
立即登录/注册

微信扫码登录

0.0395s