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