Допустим, у нас есть массив, лидер которого больше всех элементов справа от него.
Поэтому лидеры этого массива: [13,5,4,32,5,1], будут [1,5,32]. Напишем программу для поиска всех лидеров!
Алгоритм
Создайте переменную, которая хранит максимум, как мы упоминали ранее, самый правый элемент уже является лидером, поэтому нам просто нужно пройти массив слева направо и отслеживать максимум, если мы находим число, которое больше чем текущий максимум это потому, что это лидер.
ШАГ 1. Функция
Функция принимает массив, поэтому он будет выглядеть так:
function leader(arr){)
ШАГ 2: переменные
function leader(arr){ var store=arr[arr.length-1]; var final_array=[store]; }
var store: сохраняет начальный лидер, который является крайним левым элементом массива.
var final_array: мы будем использовать эту переменную для хранения лидеров, поскольку у нас уже есть лидер, мы инициализировали его с первым лидером внутри него.
ШАГ 3: обход массива слева направо
function leader(arr){ var store=arr[arr.length-1]; var final_array=[store]; for(var i= arr.length-1; i>=0; i--){ } }
ШАГ 4: Поиск лидеров
function leader(arr){ var store=arr[arr.length-1]; var final_array=[store]; for(var i= arr.length-1; i>=0; i--){ if(arr[i]>store){ store=arr[i]; final_array.push(arr[i]) } }
Оператор if проверяет, больше ли элемент в массиве, чем начальный лидер. Как только он увидит, что элемент действительно больше, чем первоначальный лидер, он сделает новый элемент новым лидером, а также поместит его в final_array, который мы используем для хранения лидеров.
ВЫВОД
function leader(arr){ var store=arr[arr.length-1]; var final_array=[store]; for(var i= arr.length-1; i>=0; i--){ if(arr[i]>store){ store=arr[i]; final_array.push(arr[i]) } } print(final_array) } leader([13,5,4,32,5,1])
ВЫВОД:1,5,32
И это все! Вы удивительный человек и теперь знаете, как найти лидеров в массиве!