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