次に小さい要素は、その後にある最初の小さい要素の要素です。例を見てみましょう。
arr = [1, 2, 3, 5, 4]
5 の次に小さい要素は 4、要素 1 と 2 の次に小さい要素は、3 は - 1、なぜなら、それに続く小さな要素がないからです。
乱数を使用して配列を初期化します
スタックを初期化します。
最初の要素をスタックに追加します。
配列の要素を繰り返し処理します。
スタックが空の場合は、現在の要素をスタックに追加します。
現在の要素がスタックの最上位の要素より小さい場合。
最上位の要素を出力し、次に小さい要素を現在の要素にします。 p>
最上位の要素をポップアップします。
#要素をスタックに追加します。
#スタックが空ではない場合。
次に小さい要素の要素を -1 として出力します。
以下は、上記のアルゴリズムの C 実装です。
#include <bits/stdc++.h> using namespace std; void nextSmallerElements(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[] = { 5, 4, 3, 2, 1 }; int n = 5; nextSmallerElements(arr, n); return 0; }
上記のコードを実行すると、次の結果が得られます。
えええええ以上がC++ で、次を中国語に翻訳します。次に小さい要素を検索します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。