二维数组的查找

来源:互联网 发布:java中indexof的用法 编辑:程序博客网 时间:2024/06/06 02:44

牛客网《剑指offer》
https://www.nowcoder.com/ta/coding-interviews


时间限制:1秒 空间限制:32768K 热度指数:423031
本题知识点:查找

题目描述

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

解题思路

来自《剑指offer》
这里写图片描述

总结上述查找的过程,我们发现以下规律:首先选取数组中右上角的数字,如果该数字等于要查找的数字,查找过程结束;如果该数字大于要查找的数字,剔除这个数字所在的列;如果该数字小于要查找的数字,提出所在的行。

程序

这里写图片描述

python 2.7

# -*- coding:utf-8 -*-class Solution:    # array 二维列表    def Find(self, target, array):        if not array:            return False        # m 行 n 列        m = len(array)        n = len(array[0])        x = 0        y = n - 1        while x < m and y >= 0:            if array[x][y] == target:                return True            elif array[x][y] < target:                x = x + 1            else:                y = y - 1        return False