Find the next greater element for every element in an array?
Short answer: int[] NextGreaterElements(int[] nums) { int n = nums.Length; int[] result = new int[n]; Stack<int> stack = new Stack<int>(); for (int i = n - 1; i >= 0; i--) { while (stack.Count > 0 && stack.Peek() <= nums[i]) { stack.Pop(); } result[i] = stack.Count == 0 ? -1 : stack.Peek(); stack.Push(nums[i]); } return result; } Explanation: Traverse from right to left, use stack to keep track of next greater elements in O(n).
Example code
int[] NextGreaterElements(int[] nums) {
int n = nums.Length;
int[] result = new int[n];
Stack<int> stack = new Stack<int>();
for (int i = n - 1; i >= 0; i--) { while (stack.Count > 0 && stack.Peek() <= nums[i]) { stack.Pop(); }
result[i] = stack.Count == 0 ? -1 : stack.Peek(); stack.Push(nums[i]); }
return result;
} Explanation: Traverse from right to left, use stack to keep track of next greater elements in O(n).
Real-world example (ShopNest)
In coding rounds, state complexity aloud, write a clear ShopNest-flavored example (orders, carts), then handle edge cases (empty list, null, overflow).
Say this in the interview
- Define — one clear sentence (the short answer above).
- Example — relate it to a project like ShopNest or your real work.
- Trade-off — when you would not use it.
Share this Q&A
Share preview image: https://www.toolliyo.com/images/toolliyo-logo.png