C++のソートされていない配列のk番目に欠落している要素
このチュートリアルでは、指定されたソートされていない配列でk番目に欠落している要素を見つけるプログラムを作成します。
k-thを見つけます 指定されたソートされていない配列で最小から最大まで欠落している数。問題を解決するための手順を見てみましょう。
- ソートされていないアレイを初期化します。
- すべての要素をセットに挿入します。
- 配列から最大要素と最小要素を見つけます。
- 最小から最大まで繰り返すループを作成し、カウントの変数を維持します。
- 現在の要素がセットに存在する場合は、カウントを増やします。
- カウントがkに等しい場合は、iを返します。
例
コードを見てみましょう。
#include <bits/stdc++.h> using namespace std; int findMissingNumber(int arr[], int n, int k) { unordered_set<int> numbers; int count = 0; for (int i = 0; i < n; i++) { numbers.insert(arr[i]); } int max = *max_element(arr, arr + n); int min = *min_element(arr, arr + n); for (int i = min + 1; i < max; i++) { if (numbers.find(i) == numbers.end()) { count++; } if (count == k) { return i; } } return -1; } int main() { int arr[] = { 1, 10, 3, 2, 5 }, n = 5; int k = 3; cout << findMissingNumber(arr, n, k) << endl; return 0; }
出力
上記のコードを実行すると、次の結果が得られます。
7
結論
チュートリアルに質問がある場合は、コメントセクションにそのことを記載してください。
-
C++のソートされていない配列でk個の最も近い数を検索します
要素が少ない配列Aがあるとします。配列はソートされていません。他に2つの値Xとkがあります。私たちのタスクは、配列AからXの最も近い要素のk個を見つけることです。要素Xが配列に存在する場合、それは出力に表示されません。 A =[48、50、55、30、39、35、42、45、12、16、53、22、56]およびX =35、k =4の場合、出力は30、39、42、45になります。 。 これを解決するために、ヒープデータ構造を使用します。手順は次のようになります- 最初のk個の要素との差の最大ヒープを1つ作成します k + 1番目の要素から始まるすべての要素について、これらの手順を繰
-
C++の配列内の各要素のSurpasserCountを検索します
1つの配列Aが与えられたと仮定します。その配列内の各要素の超過者の数を見つける必要があります。超過者は、現在の要素の配列の右側に存在するより大きな要素です。 A ={2、7、5、3、0、8、1}とすると、超過者は{4、1、1、1、2、0、0}であるため、2の右側には4つの数字があります。 4よりも多く、他の人にも同じルールがあります。解決策は非常に単純で、2つのネストされたループがあり、要素ごとに、超過者をカウントして、別の配列に格納します。 例 #include <iostream> using namespace std; void gerSurpassers(int arr[