C++のソートされた配列でk番目に欠落している要素
このチュートリアルでは、指定された並べ替えられた配列でk番目に欠落している要素を見つけるプログラムを作成します。
指定されたソートされていない配列で最小から最大まで欠落しているk番目の数値を見つけます。問題を解決するための手順を見てみましょう。
- ソートされた配列を初期化します。
- 2つの変数の差を初期化し、kでカウントします。
- アレイを反復処理します。
- 現在の要素が次の要素と等しくない場合。
- 2つの数値の違いを見つけます。
- 差がk以上の場合は、現在の要素にカウントを加えたものを返します。
- それ以外の場合は、カウントから差を引きます。
- 現在の要素が次の要素と等しくない場合。
- -1を返します。
例
コードを見てみましょう。
#include <bits/stdc++.h> using namespace std; int findMissingNumber(int arr[], int k, int n) { int difference, count = k; for(int i = 0 ; i < n - 1; i++) { if ((arr[i] + 1) != arr[i + 1]) { difference = arr[i + 1] - arr[i] - 1; if (difference >= count) { return arr[i] + count; }else { count -= difference; } } } return -1; } int main() { int arr[] = { 1, 2, 3, 5, 10 }, n = 5; int k = 3; cout << findMissingNumber(arr, k, n) << endl; return 0; }
出力
上記のコードを実行すると、次の結果が得られます。
7
結論
チュートリアルに質問がある場合は、コメントセクションにそのことを記載してください。
-
C++でM回連結された配列からK番目の最小要素を見つけます
配列Aと、さらに2つの整数KとMがあるとします。配列をそれ自体にM回連結した後、K番目の最小要素を見つける必要があります。配列がA=[3、1、2]、K =4、M =3のようであるとすると、Aを3回連結すると、[3、1、2、3、1、2、3、1 、2]、4番目に小さい要素はここでは2です。 この問題を解決するために、配列Aを並べ替えてから、配列のインデックス((K – 1)/ M)にある値を返します。 例 #include<iostream> #include<algorithm> using namespace std; int findKSmallestNumber(
-
C++でソートされた配列の多数決要素を確認します
7/2と表示されます。 配列内のxの出現を数えることができ、その数がn / 2より大きい場合、答えはtrueになり、そうでない場合はfalseになります。 例 #include <iostream> #include <stack> using namespace std; bool isMajorityElement(int arr[], int n, int x){ int freq = 0; for(int i = 0; i<n; i++){ if(arr[i]