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
廣告