Sobes.tech
Senior
51

Άσκηση 2. Συγχώνευση δύο ταξινομημένων πινάκων Δίνονται δύο ταξινομημένοι κατά αύξουσα σειρά πίνακες, nums1 και nums2. Πρέπει να τα ενώσετε σε έναν ενιαίο πίνακα ταξινομημένο κατά αύξουσα σειρά. nums1 = [1, 3, 5] nums2 = [2, 4, 6] merge_sorted(nums1, nums2) -> [1, 2, 3, 4, 5, 6]

Εταιρείες όπου ρωτήθηκαν
СБЕРСБЕР

Απάντηση από AI

sobes.tech AI

Для слияния двух отсортированных массивов можно использовать два указателя, которые будут проходить по массивам и сравнивать текущие элементы, добавляя меньший в результирующий массив. Это классический алгоритм слияния, который работает за время O(n + m), где n и m — размеры массивов.

Пример на Python:

def merge_sorted(nums1, nums2):
    i, j = 0, 0
    merged = []
    while i < len(nums1) and j < len(nums2):
        if nums1[i] < nums2[j]:
            merged.append(nums1[i])
            i += 1
        else:
            merged.append(nums2[j])
            j += 1
    # Добавляем оставшиеся элементы
    merged.extend(nums1[i:])
    merged.extend(nums2[j:])
    return merged

# Пример использования
nums1 = [1, 3, 5]
nums2 = [2, 4, 6]
print(merge_sorted(nums1, nums2))  # [1, 2, 3, 4, 5, 6]