Ganha a oferta - para encontrar uma matriz bidimensional - python

Título Descrição :

(O comprimento de cada uma matriz tridimensional do mesmo), cada fileira da esquerda para a direita em ordem de tipo ascendente, para classificar cada coluna em uma matriz bi-dimensional, a fim de aumentar a partir de cima para baixo. Uma função completa, introduzir uma matriz tal bidimensional e um número inteiro, é determinado se a matriz contém o número inteiro.

idéias :

  • Violência Resolver Método : Como os elementos da matriz são armazenados de acordo com a lei, para X Eu , j x_ {i, j} tem X Eu - 1 , j < X Eu , j < X Eu + 1 , j x_ {i-1, j} <x_ {i, j} <x_ {i + 1, j} e X X , j - 1 < X Eu , j < X X , j + 1 x_ {x, j-1} <x_ {i, j} <x_ {x, j + 1} . Assim, quando uma matriz dimensional inferior de uma forma violenta é se existe um na comparação inteiro para encontrar a matriz.
  • método inteligente : Devido à existência de uma lei, a posição onde podemos a partir da posição elemento menor ou maior do elemento, que é o canto inferior esquerdo ou no canto superior direito da matriz bidimensional para começar a procurar. Se os elementos da posição corrente é menor do que o número de pesquisas, o número de linhas e 1, caso contrário, o número de colunas mais um.

    Aqui Insert Picture Descrição

Código AC

Violência Solving Method

# -*- coding:utf-8 -*-
class Solution:
    # array 二维列表
    def Find(self, target, array):
        data = array[0]
        # 全部元素
        for i in range(1, len(array)):
            data.extend(array[i])
        
        if target in data:
            return True
            
        return False

método inteligente

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

# 上三角寻找
# -*- coding:utf-8 -*-
class Solution:
    def Find(self, target, array):
        # write code here
        if array == None:
            return None
            
        # 行数和列数
        rows, cols = len(array), len(array[0])
        col = cols - 1
        row = 0
        while col >= 0 and row <= rows - 1:
            if array[row][col] == target:
                return True
            elif array[row][col] > target:
                col -= 1
            else:
                row += 1
        
        return False
Publicado 289 artigos originais · ganhou elogios 103 · Exibições 200.000 +

Acho que você gosta

Origin blog.csdn.net/Forlogen/article/details/104884269
Recomendado
Clasificación