ในปัญหานี้ เราได้รับอาร์เรย์ arr[] ซึ่งประกอบด้วยตัวเลข n งานของเราคือสร้างโปรแกรมเพื่อค้นหาจำนวนของ องค์ประกอบที่จะเพิ่มเพื่อให้องค์ประกอบทั้งหมดของช่วงมีอยู่ในอาร์เรย์
คำอธิบายปัญหา: ที่นี่ เราจำเป็นต้องค้นหาจำนวนองค์ประกอบที่จำเป็นในการเพิ่มอาร์เรย์เพื่อให้แน่ใจว่าองค์ประกอบทั้งหมดของช่วงมีอยู่ในอาร์เรย์ ช่วงมาจาก smallestElement of array ถึง องค์ประกอบที่ใหญ่ที่สุดของอาร์เรย์
มาดูตัวอย่างเพื่อทำความเข้าใจปัญหากัน
ป้อนข้อมูล: arr[] ={5, 8, 3, 1, 6, 2}
ผลลัพธ์: 2
คำอธิบาย:
ช่วงตั้งแต่ 1 ถึง 8
องค์ประกอบที่จะเพิ่มคือ 4 และ 7
แนวทางการแก้ปัญหา -
วิธีแก้ปัญหาอย่างง่ายคือการค้นหาว่าองค์ประกอบใดของช่วงที่ไม่มีอยู่ในอาร์เรย์ สำหรับสิ่งนี้ เราจำเป็นต้องจัดเรียงอาร์เรย์แล้วค้นหาว่ามีองค์ประกอบถัดไปหรือไม่
อัลกอริทึม −
ขั้นตอนที่ 1: จัดเรียงอาร์เรย์
ขั้นตอนที่ 2: วนซ้ำในอาร์เรย์สำหรับ i -> 0 ถึง n-1
ขั้นตอนที่ 2.1: ถ้า arr[i] + 1 !=arr[i+1] ให้เพิ่มจำนวน
ขั้นตอนที่ 3: จำนวนการพิมพ์
โปรแกรมเพื่อแสดงการทำงานของโซลูชันของเรา
ตัวอย่าง
#include <bits/stdc++.h> using namespace std; int calcEleRequired(int arr[], int n) { int count = 0; sort(arr, arr + n); for (int i = 0; i < n - 1; i++) if (arr[i]+1 != arr[i+1] ) count ++; return count; } int main() { int arr[] = { 5, 7, 3, 1, 6, 2 }; int n = sizeof(arr) / sizeof(arr[0]); cout<<"The number of elements required to complete the range is "<<calcEleRequired(arr, n); return 0; }
ผลลัพธ์ -
The number of elements required to complete the range is 1