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

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


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

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

  • เริ่มต้นอาร์เรย์ที่จัดเรียง
  • เริ่มต้นสองตัวแปรที่แตกต่างและนับด้วย k
  • วนซ้ำบนอาร์เรย์
    • หากองค์ประกอบปัจจุบันไม่เท่ากับองค์ประกอบถัดไป
      • ค้นหาความแตกต่างระหว่างตัวเลขทั้งสอง
      • หากผลต่างมากกว่าหรือเท่ากับ k ให้คืนค่าองค์ประกอบปัจจุบันบวกจำนวน
      • อย่างอื่นลบส่วนต่างจากการนับ
  • คืน -1.

ตัวอย่าง

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

#include <bits/stdc++.h>
using namespace std;
int findMissingNumber(int arr[], int k, int n) {
   int difference, count = k;
   for(int i = 0 ; i < n - 1; i++) {
      if ((arr[i] + 1) != arr[i + 1]) {
         difference = arr[i + 1] - arr[i] - 1;
         if (difference >= count) {
            return arr[i] + count;
         }else {
            count -= difference;
         }
      }
   }
   return -1;
}
int main() {
   int arr[] = { 1, 2, 3, 5, 10 }, n = 5;
   int k = 3;
   cout << findMissingNumber(arr, k, n) << endl;
   return 0;
}

ผลลัพธ์

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

7

บทสรุป

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