Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

องค์ประกอบที่จะเพิ่มเพื่อให้องค์ประกอบทั้งหมดของช่วงมีอยู่ในอาร์เรย์ใน C++


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