ในบทช่วยสอนนี้ เราจะเขียนโปรแกรมที่จะหาองค์ประกอบที่เล็กที่สุดหลังจากลบจำนวนเต็มออกจากจำนวนธรรมชาติแล้ว
เราได้ให้อาร์เรย์ขององค์ประกอบและค่า k ลบองค์ประกอบทั้งหมดออกจากจำนวนธรรมชาติที่มีอยู่ในอาร์เรย์ที่กำหนด แล้วหาจำนวนที่น้อยที่สุดในลำดับที่ k จากจำนวนธรรมชาติที่เหลืออยู่
มาดูขั้นตอนการแก้ปัญหากัน
- กำหนดค่าเริ่มต้นอาร์เรย์และ k
- เริ่มต้นอาร์เรย์และเริ่มต้นองค์ประกอบทั้งหมดด้วย 0 ยกเว้นองค์ประกอบที่มีอยู่ในอาร์เรย์ที่กำหนด
- เขียนลูปที่วนซ้ำจนถึงขนาดของอาร์เรย์ที่กำหนด
- ลดค่าของ k หากองค์ประกอบปัจจุบันไม่มีอยู่ในอาร์เรย์ด้านบน
- คืนค่าปัจจุบันเมื่อ k กลายเป็นศูนย์
- คืนค่า 0
ตัวอย่าง
มาดูโค้ดกันเลย
#include <bits/stdc++.h>
#define MAX 1000000
using namespace std;
int smallestNumber(int arr[], int n, int k) {
int flag[MAX];
memset(flag, 0, sizeof flag);
for (int i = 0; i < n; i++) {
flag[arr[i]] = 1;
}
for (int i = 1; i < MAX; i++) {
if (flag[i] != 1) {
k--;
}
if (!k) {
return i;
}
}
return 0;
}
int main() {
int k = 2;
int arr[] = { 3, 5 };
cout << smallestNumber(arr, 2, k) << endl;
return 0;
} ผลลัพธ์
หากคุณเรียกใช้โค้ดด้านบน คุณจะได้ผลลัพธ์ดังต่อไปนี้
2
บทสรุป
หากคุณมีข้อสงสัยใดๆ ในบทแนะนำ โปรดระบุในส่วนความคิดเห็น