ホームページ  >  記事  >  バックエンド開発  >  C++ で、次を中国語に翻訳します。次に小さい要素を検索します。

C++ で、次を中国語に翻訳します。次に小さい要素を検索します。

PHPz
PHPz転載
2023-09-20 16:29:071100ブラウズ

C++ で、次を中国語に翻訳します。次に小さい要素を検索します。

次に小さい要素は、その後にある最初の小さい要素の要素です。例を見てみましょう。

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;
}

Output

上記のコードを実行すると、次の結果が得られます。

えええええ

以上がC++ で、次を中国語に翻訳します。次に小さい要素を検索します。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はtutorialspoint.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。