C++ 中的下一個較大元素


下一個較大元素是緊隨其後第一個較大的元素。讓我們看一個示例。

arr = [4, 5, 3, 2, 1]

4 的下一個較大元素是 5,元素 3、2、1 的下一個較大元素是 -1,因為後面沒有較大的元素。

演算法

  • 用隨機數字初始化陣列。

  • 初始化堆疊。

  • 將第一個元素新增到堆疊中。

  • 遍歷陣列的元素。

    • 如果堆疊為空,則將當前元素新增到堆疊中。

    • 如果當前元素大於堆疊中的頂層元素。

      • 將頂層元素與下一較大元素(即當前元素)一起打印出來。

      • 彈出頂層元素。

    • 將元素新增到堆疊中。

  • 如果堆疊不為空。

    • 將元素打印出來,下一個較大元素為 -1。

實現

以下是 C++ 中上述演算法的實現

#include <bits/stdc++.h>
using namespace std;
void nextGreaterElements(int arr[], int n) {
   stack<int> s;
   s.push(arr[0]);
   for (int i = 1; i < n; i++) {
      if (s.empty()) {
         s.push(arr[i]);
         continue;
      }
      while (!s.empty() && s.top() < arr[i]) {
         cout << s.top() << " -> " << arr[i] << endl;
         s.pop();
      }
      s.push(arr[i]);
   }
   while (!s.empty()) {
      cout << s.top() << " -> " << -1 << endl;
      s.pop();
   }
}
int main() {
   int arr[] = { 1, 2, 3, 4, 5 };
   int n = 5;
   nextGreaterElements(arr, n);
   return 0;
}

輸出

如果你執行以上程式碼,你會得到以下結果。

1 -> 2
2 -> 3
3 -> 4
4 -> 5
5 -> -1

更新於:2021-10-23

770 次觀看

開啟你的 事業

透過完成課程獲得認證

開始吧
廣告