C++中新增元素以確保範圍內的所有元素都存在於陣列中


在這個問題中,我們得到一個包含n個數字的陣列arr[]。我們的任務是建立一個程式來查詢需要新增的元素數量,以便該範圍內的所有元素都存在於陣列中。

問題描述:在這裡,我們需要找到需要新增到陣列中的元素數量,以確保陣列中存在該範圍內的所有元素。該範圍是從陣列的最小元素到陣列的最大元素

讓我們來看一個例子來理解這個問題:

輸入: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

更新於: 2021年1月22日

82 次瀏覽

開啟你的職業生涯

透過完成課程獲得認證

開始學習
廣告