mirror of
https://github.com/trailofbits/algo.git
synced 2025-08-15 17:23:07 +02:00
Create f6
This commit is contained in:
parent
3468d27e61
commit
a40f4d6b27
1 changed files with 56 additions and 0 deletions
56
f6
Normal file
56
f6
Normal file
|
@ -0,0 +1,56 @@
|
||||||
|
|
||||||
|
// A Stack based C++ program to find next
|
||||||
|
// greater element for all array elements.
|
||||||
|
#include <bits/stdc++.h>
|
||||||
|
using namespace std;
|
||||||
|
|
||||||
|
/* prints element and NGE pair for all
|
||||||
|
elements of arr[] of size n */
|
||||||
|
void printNGE(int arr[], int n) {
|
||||||
|
stack < int > s;
|
||||||
|
|
||||||
|
/* push the first element to stack */
|
||||||
|
s.push(arr[0]);
|
||||||
|
|
||||||
|
// iterate for rest of the elements
|
||||||
|
for (int i = 1; i < n; i++) {
|
||||||
|
|
||||||
|
if (s.empty()) {
|
||||||
|
s.push(arr[i]);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* if stack is not empty, then
|
||||||
|
pop an element from stack.
|
||||||
|
If the popped element is smaller
|
||||||
|
than next, then
|
||||||
|
a) print the pair
|
||||||
|
b) keep popping while elements are
|
||||||
|
smaller and stack is not empty */
|
||||||
|
while (s.empty() == false && s.top() < arr[i])
|
||||||
|
{
|
||||||
|
cout << s.top() << " --> " << arr[i] << endl;
|
||||||
|
s.pop();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* push next to stack so that we can find
|
||||||
|
next greater for it */
|
||||||
|
s.push(arr[i]);
|
||||||
|
}
|
||||||
|
|
||||||
|
/* After iterating over the loop, the remaining
|
||||||
|
elements in stack do not have the next greater
|
||||||
|
element, so print -1 for them */
|
||||||
|
while (s.empty() == false) {
|
||||||
|
cout << s.top() << " --> " << -1 << endl;
|
||||||
|
s.pop();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Driver program to test above functions */
|
||||||
|
int main() {
|
||||||
|
int arr[] = {11, 13, 21, 3};
|
||||||
|
int n = sizeof(arr) / sizeof(arr[0]);
|
||||||
|
printNGE(arr, n);
|
||||||
|
return 0;
|
||||||
|
}
|
Loading…
Add table
Reference in a new issue