在 C++ 中查詢由兩個陣列之和形成的集合中的第 N 個專案


在這個問題中,我們得到了兩個已排序的陣列 arr1[] 和 arr2[],大小分別為 m 和一個元素 N。我們的任務是在由兩個陣列之和形成的集合中找到第 N 個專案。

程式碼描述 − 在這裡,我們將建立一個集合,該集合包含 arr1 的一個元素和 arr2 的一個元素的和,即 sum = arr1[i] + arr2[j],其中 i, j < m。對於 N,我們需要找到集合中第 N 個元素的值。

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

輸入

arr1[] = {3, 1, 5} , arr2[] = {6, 2, 8} , N = 4

輸出

解釋

集合的元素為:

9 (3+6 and 1 +8) , 5 (3 + 2) , 11 (3+8, 5+6), 7 (1+6, 5+2), 3 (1+2), 13 (5+8).
The fourth element is 7.

解決方案方法

解決方案方法很簡單,透過找到陣列元素的和來找到集合的元素。為此,我們將使用巢狀迴圈,外部迴圈迭代 arr1 的元素,內部迴圈迭代 arr2 的元素。對於內部迴圈的每次迭代,我們將總和儲存到集合中,這將不允許重複元素。在所有總和值都輸入後,我們將遍歷集合並返回第 N 個元素。

程式說明了我們解決方案的工作原理:

示例

線上演示

#include <iostream>
using namespace std;
void calcSumVariables(int sum[], int n) {
   float SUMX = 0;
   for (int i = 0; i < n; i++) {
      SUMX += sum[i];
   }
   SUMX /= (n - 1);
   for (int i = 0; i < n; i++)
      cout<<"\nx"<<(i + 1)<<" = "<<(SUMX - sum[i]);
}
int main(){
   int sum[] = {3, 8, 6, 7, 4, 5, 9 };
   int N = sizeof(sum) / sizeof(sum[0]);
   cout<<"The value of variables that form the sum are ";
   calcSumVariables(sum, N);
   return 0;
}

輸出

The value of variables that form the sum are
x1 = 4
x2 = -1
x3 = 1
x4 = 0
x5 = 3
x6 = 2
x7 = -2

更新於:2021年3月13日

瀏覽量:118

啟動您的職業生涯

透過完成課程獲得認證

開始
廣告