Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

องค์ประกอบที่ยิ่งใหญ่กว่าถัดไปใน 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