проблема:
найти максимальную сумму элементов в подмассиве, содержащем уникальные элементы
пример: входной массив = [4,3,2,7,8,2,3,5] выходной = 25
Подход:
шаг 1. найти уникальные элементы, которые должны содержать уже посещенные элементы
шаг 2. сохранить текущую сумму и максимальную сумму для каждого элемента
шаг 3. если появляется повторяющийся элемент, удалить все элементы с карты до последнего индекса того же элемента
Код: Python
def unique_subarray_sum(array): i = 0 j = 1 visited = {} current_sum = array[0] max_sum = current_sum visited[array[0]] = 1 while j < len(array) and i < len(array) - 1: if array[j] not in visited: current_sum += array[j] max_sum = max(current_sum, max_sum) visited[array[j]] = 1 j += 1 else: current_sum -= array[i] del visited[array[i]] i += 1 return max_sum
Сложность: временная сложность: O(n) пространственная сложность: O(n)