ในปัญหานี้ เราได้รับอาร์เรย์ 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