10.01 leetcode вопросы интервью. Слияния упорядоченного массива (Python)

Метод а: содержание В копируются непосредственно в оставшемся пространстве А, а затем сортировать А быстрое применение.
Сложность Время: О (т + п) журнал (т + п)
код следующим образом :

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

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

Метод два: двойной указатель
, используя два указателя указывают на два массива A и B, начиная с самого начала элементов массива двух размеров, малого рода в новый массив, а
код выглядит следующим образом :

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

Способ третий: обратный двойной указатель (модификации на месте, дополнительного пространства хранения в)
для массива A и B массива расположены указатель а, б. A Начальная точка последнего элемента в массиве А, то есть а = м-1, B изначально указывает на последний элемент в массиве B, т.е., B = N-1; сравните элемент указателя и указатель б для размера элемента, большой наиболее массива в положение элемента (то есть, т + п-1 позиция). И последовательный порядок вставки элементов.

Код выглядит следующим образом:

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
Опубликовано 100 оригинальных статей · вона похвала 3 · просмотров 10000 +

рекомендация

отblog.csdn.net/cy_believ/article/details/104648559
рекомендация