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

องค์ประกอบที่เล็กที่สุด Kth หลังจากการแทรกทุกครั้งใน C++


ในบทช่วยสอนนี้ เราจะไปหา k-th องค์ประกอบที่เล็กที่สุดหลังจากการแทรกทุกครั้ง

เราจะใช้ min-heap เพื่อแก้ปัญหา มาดูขั้นตอนในการจบโปรแกรมกัน

  • เริ่มต้นอาร์เรย์ด้วยข้อมูลสุ่ม
  • เริ่มต้นคิวลำดับความสำคัญ
  • จนถึง k - 1 จะไม่มี k-th . ใดๆ องค์ประกอบที่เล็กที่สุด ดังนั้น พิมพ์สัญลักษณ์ใดๆ ที่คุณชอบ
  • เขียนลูปที่วนซ้ำจาก k + 1 ถึง n.
    • พิมพ์รูทของ min-heap
    • หากองค์ประกอบมากกว่ารูทของ min-heap ให้เปิดรูทและแทรกองค์ประกอบ

ตัวอย่าง

มาดูโค้ดกันเลย

#include <bits/stdc++.h>
using namespace std;
void findKthSmallestElement(int elements[], int n, int k) {
   priority_queue<int, vector<int>, greater<int>> queue;
   for (int i= 0; i < k - 1; i++) {
      queue.push(elements[i]);
      cout << "- ";
   }
   queue.push(elements[k-1]);
   for (int i = k; i < n; i++) {
      cout << queue.top() << " ";
      if (elements[i] > queue.top()) {
         queue.pop();
         queue.push(elements[i]);
      }
   }
   cout << queue.top() << endl;
}
int main() {
   int arr[] = {3, 5, 6, 2, 7, 8, 2, 3, 5, 9};
   findKthSmallestElement(arr, 10, 5);
   return 0;
}

ผลลัพธ์

หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้

- - - - 2 3 3 3 5 5

บทสรุป

หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น