ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมเพื่อหาค่าที่หายไปลำดับที่ 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
สรุป
หากมีข้อสงสัยเกี่ยวกับบทช่วยสอนนี้ สามารถถามได้ในส่วนความคิดเห็น