Next Greater Element

  • n^2, n

function nextGreaterElement(arr) {

  const answer = [];

  for (let i = 0; i < arr.length; i++) {
    const curr = i;
    let idx = (i + 1) % arr.length;
    
    while (idx !== i) {

      if (arr[curr] < arr[idx]) {
        answer[curr] = arr[idx];
        break;
      }
      idx++;
      idx %= arr.length;      
    }
    
    if (idx === i) {
      answer[curr] = -1;
    }
    
  }
  
  return answer;
}

// Do not edit the line below.
exports.nextGreaterElement = nextGreaterElement;
  • optimized with using stack β‡’ pick from latest element

  • n, n

Last updated