Мы будем реализовывать код JavaScript для поиска следующего большего числа в массиве.
Вопрос. Первый больший элемент справа от x в массиве является следующим большим элементом для элемента x. Рассмотрим следующий больший элемент как -1 для элементов, для которых нет большего элемента.
Давайте сначала разберемся в проблеме на примерах:
let arr = [ 1000 , 8 , 100 , 120 , 5 , 1] //Output: [-1 , 100 , 120 , -1 , -1 , -1]
Реализация
- Поместите первый элемент в стек.
- Выберите остальные элементы один за другим и выполните следующие шаги в цикле.
a. Пометить текущий элемент как следующий.
б. Если стек не пуст, сравнить верхний элемент стека со следующим.
c. Если следующий больше, чем верхний элемент, извлеките элемент из стека. next — следующий больший элемент для извлеченного элемента.
d. Продолжайте выталкивать из стека, пока выталкиваемый элемент меньше следующего. next становится следующим большим элементом для всех таких выталкиваемых элементов. - Наконец, нажмите следующий в стеке.
- После завершения цикла на шаге 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
Я надеюсь, что вы найдете этот пост полезным, чтобы прочитать больше вопроса, нажмите на ссылку.
Аналогичный вопрос: Следующее меньшее число.