Мы будем реализовывать код JavaScript для поиска следующего большего числа в массиве.

Вопрос. Первый больший элемент справа от x в массиве является следующим большим элементом для элемента x. Рассмотрим следующий больший элемент как -1 для элементов, для которых нет большего элемента.

Давайте сначала разберемся в проблеме на примерах:

let arr = [ 1000 , 8 , 100 , 120 , 5 ,  1]
//Output:
[-1 , 100 , 120 , -1 , -1 , -1]

Реализация

  1. Поместите первый элемент в стек.
  2. Выберите остальные элементы один за другим и выполните следующие шаги в цикле.
    a. Пометить текущий элемент как следующий.
    б. Если стек не пуст, сравнить верхний элемент стека со следующим.
    c. Если следующий больше, чем верхний элемент, извлеките элемент из стека. next — следующий больший элемент для извлеченного элемента.
    d. Продолжайте выталкивать из стека, пока выталкиваемый элемент меньше следующего. next становится следующим большим элементом для всех таких выталкиваемых элементов.
  3. Наконец, нажмите следующий в стеке.
  4. После завершения цикла на шаге 2 извлеките все элементы из стека и напечатайте -1 в качестве вложенного элемента из них.
function getNGR(arr){
    var queue = [];
    queue.push(arr[0]);
    for(let i = 1;i < arr.length;i++){
        if(queue.length == 0){
            queue.push(arr[i]);
            continue;
        }
        while(!(queue.length == 0 ) && s[queue.length - 1] < arr[i]){
            console.log(s[queue.length - 1], arr[i])
            queue.pop()
        }
        queue.push(arr[i])
    }
    while(queue.length !=0 ){
        console.log(s[queue.length - 1], -1)
        queue.pop()
    }
}
console.log(getNGR([11, 13, 21, 3]))
Output:
8 100
100 120
1 -1
5 -1
120 -1
1000 -1

Я надеюсь, что вы найдете этот пост полезным, чтобы прочитать больше вопроса, нажмите на ссылку.
Аналогичный вопрос: Следующее меньшее число.