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

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

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

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

  • กำหนดค่าเริ่มต้นของอาร์เรย์ที่เรียงลำดับ
  • กำหนดตัวแปร difference และ count เริ่มต้นเป็น k
  • วนลูปผ่านอาร์เรย์
    • ถ้าองค์ประกอบปัจจุบันไม่เท่ากับองค์ประกอบถัดไป
      • หาความต่างระหว่างสองตัวเลข
      • ถ้าความต่างมากกว่าหรือเท่ากับ k ให้คืนค่าองค์ประกอบปัจจุบันบวก count
      • มิฉะนั้น ลบความต่างออกจาก count
  • คืนค่า -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

สรุป

หากมีข้อสงสัยเกี่ยวกับบทช่วยสอนนี้ สามารถถามได้ในส่วนความคิดเห็น