剑指offer(python): 第一题 数组 二维数组中的查找

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jesmine_gu/article/details/82787721

题目描述:

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

最粗暴的做法,对数组中的数字一个个遍历过去。最差情况下的时间复杂度是O(rows*cols)

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

考虑题目本身的的特性,每行每列都是有序的数组

每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序

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


 希望一年后能到心仪的城市找到心仪的工作,从提高自己的渣渣编程能力开始!

给自己立个flag:

暂时一周3-5题的题量,不求多,但求每题都能认真去做!

猜你喜欢

转载自blog.csdn.net/jesmine_gu/article/details/82787721