zoukankan      html  css  js  c++  java
  • 剑指Offer(一):二维数组中的查找

    一、前言

    刷题平台:牛客网

    二、题目

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

    1、思路

    首先选取数组中右上角的数字。如果该数字等于要查找的数字,查找过程结束;如果该数字大于要查找的数组,剔除这个数字所在的列;如果该数字小于要查找的数字,剔除这个数字所在的行。也就是说如果要查找的数字不在数组的右上角,则每一次都在数组的查找范围中剔除一行或者一列,这样每一步都可以缩小查找的范围,直到找到要查找的数字,或者查找范围为空。

    2、举例

    如果在一个二维数组中找到数字7,则返回true,如果没有找到,则返回false。

    剑指Offer(一):二维数组中的查找

    查找过程如下:

    剑指Offer(一):二维数组中的查找

    3、编程实现

    Python3:

    # -*- coding:utf-8 -*-
    class Solution:
        # array 二维列表
        def Find(self, target, array):
            # write code here
            rows = len(array)
            cols = len(array[0])
            if rows > 0 and cols > 0:
                row = 0
                col = cols - 1
                while row < rows and col >= 0:
                    if target == array[row][col]:
                        return True
                    elif target < array[row][col]:
                        col -= 1
                    else:
                        row += 1
            return False

    或者:

    # -*- coding:utf-8 -*-
    class Solution:
        # array 二维列表
        def Find(self, target, array):
            # write code here
            rows = len(array)-1
            cols = len(array[0])-1
            i = rows
            j = 0
            while j<=cols and i>=0:
                if target<array[i][j]:
                    i -= 1
                elif target>array[i][j]:
                    j += 1
                else:
                    return True
                
            return False
                        

    转载自:剑指Offer(一):二维数组中的查找 | Jack Cui

  • 相关阅读:
    centos7使用supermin制作centos7的docker镜像包
    Linux ip netns 命令
    ip命令讲解
    openstack API应用用
    在EF6.0中打印数据库操作日志
    EF记录统一添加创建,修改时间
    Inner Join and Left Join 与条件的结合
    字符串分割
    居中方案
    移动 前端 框架
  • 原文地址:https://www.cnblogs.com/ceo-python/p/11717092.html
Copyright © 2011-2022 走看看