• 剑指offer-JZ1 二维数组中的查找


    难度:中等

    知识点:数组

    题目描述:

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

    解题思路:

    最容易想到的就是直接两层for循环嵌套进行遍历,但是这样子就没有用到题目中所给的递增信息。

    所以换个思路,先拿边界元素来与整数进行比较,再根据两个递增的特性,分别判断,如果元素比整数小,证明一定不在元素所在的列,如果元素比整数大,证明一定不在元素所在的行,然后进行递归。

    # -*- coding:utf-8 -*-
    class Solution:
        # array 二维列表
        def Find(self, target, array):
            # write code here
            
            # 初始化行号和列号
            row_count = len(array)
            i = 0
            col_count = len(array[0])
            j = len(array[0]) - 1   #是index
            while i < row_count and j >= 0 :
                value = array[i][j]
                if value == target:
                    return True
                if value > target:
                    j -= 1
                else:
                    i += 1
            return False   
        # 时间复杂度为 O(m+n) 
                
            '''
            for i in range (len(array)):
                for j in range (len(array[0])):
                    if target == array[i][j]:
                        return True
            return False  # 此时的时间复杂度为O(mn)
        '''
  • 相关阅读:
    MySQL 连接 触发器 函数 视图 存储过程
    Django的ORM2
    nmp安装vuejs
    Docker 技术入门与实践(第3版)笔记
    docker官方 入门
    centos 各目录介绍
    阿里云es 安装docker
    linux命令
    centos 7 mini 安装青岛OJ
    leetcode_304. 二维区域和检索
  • 原文地址:https://www.cnblogs.com/LLLLgR/p/15017678.html
Copyright © 2020-2023  润新知