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

องค์ประกอบที่ k ขาดหายไปในอาร์เรย์ที่ไม่เรียงลำดับใน C++


ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมที่จะค้นหาองค์ประกอบที่ k ที่หายไปในอาร์เรย์ที่ไม่เรียงลำดับที่กำหนด

ค้นหา k-th จำนวนที่ขาดหายไปจาก min ถึง max ในอาร์เรย์ที่ไม่ได้เรียงลำดับที่กำหนด มาดูขั้นตอนการแก้ปัญหากัน

  • เริ่มต้นอาร์เรย์ที่ไม่ได้เรียงลำดับ
  • แทรกองค์ประกอบทั้งหมดลงในชุด
  • ค้นหาองค์ประกอบสูงสุดและต่ำสุดจากอาร์เรย์
  • เขียนลูปที่วนซ้ำจาก min ถึง max และรักษาตัวแปรสำหรับการนับ
    • หากมีองค์ประกอบปัจจุบันในชุด ให้เพิ่มการนับ
    • ถ้าการนับเท่ากับ k ให้คืนค่า i

ตัวอย่าง

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

#include <bits/stdc++.h>
using namespace std;
int findMissingNumber(int arr[], int n, int k) {
   unordered_set<int> numbers;
   int count = 0;
   for (int i = 0; i < n; i++) {
      numbers.insert(arr[i]);
   }
   int max = *max_element(arr, arr + n);
   int min = *min_element(arr, arr + n);
   for (int i = min + 1; i < max; i++) {
      if (numbers.find(i) == numbers.end()) {
         count++;
      }
      if (count == k) {
         return i;
      }
   }
   return -1;
}
int main() {
   int arr[] = { 1, 10, 3, 2, 5 }, n = 5;
   int k = 3;
   cout << findMissingNumber(arr, n, k) << endl;
   return 0;
}

ผลลัพธ์

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

7

บทสรุป

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