剑指offer-python刷题-二维数组中的查找
发布日期:2021-07-28 12:03:17 浏览次数:5 分类:技术文章

本文共 1013 字,大约阅读时间需要 3 分钟。

题目:

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

[[1,2,8,9],

  [2,4,9,12],
  [4,7,10,13],
  [6,8,11,15]]

给定 target = 7,返回 true。

给定 target = 3,返回 false。


解法一:双层循环对二维列表进行遍历,但是时间复杂度比较高。

# -*- coding:utf-8 -*-class Solution:    # array 二维列表    def Find(self, target, array):        # write code here        for i in range(len(array)):            for j in range(len(array[i])):                if array[i][j] == target:                    return True        return False

解法二:从二维数组的右上角开始查找,因为在这个位置,左侧的数比他小,右侧的数比他大,从左下角开始同理。但是不能从左上角和右下角开始。

# -*- coding:utf-8 -*-class Solution:    # array 二维列表    def Find(self, target, array):        # write code here        #从右上角开始搜索,左侧的数比当前小,下侧的数比当前大        m = len(array)        n = len(array[0])        i = 0        j = n-1        while i < m and j >= 0:            if array[i][j] == target:                return True            elif array[i][j] > target:                j -= 1            else:                i += 1        return False

转载地址:https://blog.csdn.net/sinat_42437278/article/details/118220698 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:剑指offer-python刷题-重建二叉树
下一篇:剑指offer-python刷题-二叉搜索树的第k个结点

发表评论

最新留言

网站不错 人气很旺了 加油
[***.192.178.218]2024年03月31日 04时05分48秒