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

  • 相关阅读:
    数据库设计的几个建议
    CAS单点登录和spring securtiy集成
    冒烟测试
    匠人精神
    iOS UIButton 设置图片文字垂直排列
    PHP字符串处理函数
    php 数组的常用函数
    Linux中常用操作命令
    yii2.0高级框架配置时打开init.bat秒退的解决方法 (两种方法)
    前端优化网站性能的14条规则
  • 原文地址:https://www.cnblogs.com/ceo-python/p/11717092.html
Copyright © 2011-2022 走看看