C++で自然数からいくつかの整数を削除した後のK番目に小さい要素
このチュートリアルでは、自然数からいくつかの整数を削除した後、最小の要素を見つけるプログラムを作成します。
要素の配列とk値を指定しました。指定された配列に存在する自然数からすべての要素を削除します。そして、残りの自然数からk番目に小さい数を見つけます。
問題を解決するための手順を見てみましょう。
- 配列とkを初期化します。
- 配列を初期化し、指定された配列に存在する要素を除くすべての要素を0で初期化します。
- 指定された配列のサイズになるまで繰り返すループを記述します。
- 現在の要素が上記の配列に存在しない場合は、kの値をデクリメントします。
- kがゼロになったときに現在の値を返します。
- 0を返します。
例
コードを見てみましょう。
#include <bits/stdc++.h> #define MAX 1000000 using namespace std; int smallestNumber(int arr[], int n, int k) { int flag[MAX]; memset(flag, 0, sizeof flag); for (int i = 0; i < n; i++) { flag[arr[i]] = 1; } for (int i = 1; i < MAX; i++) { if (flag[i] != 1) { k--; } if (!k) { return i; } } return 0; } int main() { int k = 2; int arr[] = { 3, 5 }; cout << smallestNumber(arr, 2, k) << endl; return 0; }
出力
上記のコードを実行すると、次の結果が得られます。
2
結論
チュートリアルに質問がある場合は、コメントセクションにそのことを記載してください。
-
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++std ::vector <>から要素を削除しますか?
C ++ std ::vector <>から要素をインデックスで削除するには、次の方法で実行できます- 例 #include<iostream> #include<vector> using namespace std; int main() { vector<int> v; //declare vector //insert elements into vector v.push_back(-10); v.push_back(7); &nb