Gane la oferta - para encontrar una matriz bidimensional - pitón

Título Descripción :

(La longitud de cada matriz unidimensional de los mismos), cada fila de izquierda a derecha en el orden de ascendente en orden, para ordenar cada columna en una matriz de dos dimensiones con el fin de aumentar de arriba a abajo. Una función completa, entran en una matriz tal de dos dimensiones y un número entero, se determina si la matriz contiene el número entero.

Ideas :

  • Violencia método de resolución : A medida que los elementos de la matriz se almacenan de acuerdo a la ley, porque X yo , j x_ {i, j} tiene X yo - 1 , j < X yo , j < X yo + 1 , j x_ {i-1, j} <x_ {i, j} <x_ {i + 1, j} y X X , j - 1 < X yo , j < X X , j + 1 x_ {x, j-1} <x_ {i, j} <x_ {x, j + 1} . Así, cuando una matriz bidimensional inferior de una manera violenta es si hay una en la comparación de enteros para encontrar la matriz.
  • inteligente método : Debido a la existencia de una ley, la posición en la que podamos de la posición del elemento más pequeño o el más grande del elemento, que es la parte inferior izquierda o en la esquina superior derecha de la matriz de dos dimensiones para empezar a buscar. Si los elementos de la posición actual es menor que el número de búsquedas, el número de filas más 1, de lo contrario, el número de columnas más uno.

    Aquí Insertar imagen Descripción

Código AC

Violencia método de resolución

# -*- 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

inteligente método

# 下三角寻找
# -*- 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
Publicados 289 artículos originales · ganado elogios 103 · Vistas de 200.000 +

Supongo que te gusta

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