10.01 perguntas da entrevista leetcode. Mesclar array ordenado (Python)

Método um: o conteúdo B é copiado diretamente para o espaço restante A, e em seguida, classificar a uma aplicação rápida.
complexidade de tempo: O (m + n) log (m + n)
de código é como se segue:

class Solution:
    def merge(self, A, m, B, n):

    	A[m:] = B
    	A.sort()
    	return A

Método dois: o ponteiro duplo
usando dois ponteiros estão a apontar para duas matrizes A e B, a partir do início dos elementos da matriz de dois tamanhos, pequeno tipo em uma nova matriz, o
código é como se segue:

class Solution:
    def merge(self, A, m, B, n):



    	a = 0
    	b = 0
    	sort = []

    	while a < m or b < n:

    		if a == m:

    			sort.append(B[b])
    			b += 1

    		elif b == n:
    			sort.append(A[a])
    			a += 1

    		elif A[a] <= B[b]:

    			sort.append(A[a])
    			a += 1

    		else:

    			sort.append(B[b])
    			b += 1



    	A[:] = sort
    	return A

Método três: ponteiro dupla reversa (na modificação in situ, sem o espaço de armazenamento adicional)
para a matriz A e B estão dispostas em matriz ponteiro a, b. um ponto inicial para o último elemento na matriz A, isto é, a = m-1, b indica inicialmente o último elemento na matriz B, isto é, b = n-1; comparar um elemento ponteiro e ponteiro b para tamanho elemento, grande um arranjo mais para uma posição de um elemento (isto é, a m + n-1 posição). E ordem sequencial de elementos de inserção.

Código é a seguinte:

class Solution:
    def merge(self, A, m, B, n):

    	a, b = m - 1, n - 1

    	tail = m + n - 1



    	while a >=0 or b >= 0:

    		if a == -1:
    			A[tail] = B[b]
    			b -= 1
    			# n -= 1
    		elif b == -1:
    			A[tail] = A[a]
    			a -= 1
    			# m -= 1



    		elif A[a] <= B[b]:

    			
    			A[tail] = B[b]
    			b -= 1
    			# n -= 1

    		else:
    			A[tail] = A[a]
    			a -= 1
    			# m -= 1
    		
    		tail -= 1


    	return A
Publicado 100 artigos originais · ganhou elogios 3 · vê 10000 +

Acho que você gosta

Origin blog.csdn.net/cy_believ/article/details/104648559
Recomendado
Clasificación