C++で指定されたn個の範囲でk番目に小さい要素を検索します
この問題では、n個の範囲と整数kが与えられます。私たちのタスクは、指定されたn個の範囲でk番目に小さい要素を見つけることです。
範囲を組み合わせた後に作成された配列から、k番目に小さい要素を見つける必要があります。
問題を理解するために例を見てみましょう。
入力: 範囲={{2、5}、{7、9}、{12、15}}、k =9
出力: 13
説明:
作成される配列は{2、3、4、5、7、8、9、12、13、14、15}
です。最小の要素は13です
ソリューションアプローチ:
この問題の簡単な解決策は、すべての範囲から配列を作成することです。配列は範囲から作成されるため、昇順で並べ替えられます。したがって、配列のk番目の値を見つける必要があります。
ソリューションの動作を説明するプログラム
例
#include <iostream>
using namespace std;
int main(){
int arr[][2] = {{2, 5}, {7, 9}, {12, 15}};
int n = sizeof(arr)/sizeof(arr[0]);
int k = 9;
int rangeArr[1000];
int size = 0;
for(int i = 0; i < n; i++)
for(int j = arr[i][0]; j <= arr[i][1]; j++) {
rangeArr[size] = j;
size++;
}
if(k < size)
cout<<k<<"th smallest element of the ranged array is "<<rangeArr[k]<<endl;
else
cout<<"invalid Index";
return 0;
} 出力
9th smallest element of the ranged array is 13
-
C ++のBST(BSTの順序統計量)でk番目に小さい要素を検索します
二分探索木があり、入力として値Kがあるとすると、ツリー内でK番目に小さい要素を見つける必要があります。 したがって、入力が次のような場合 k =3の場合、出力は15になります。 これを解決するには、次の手順に従います- 関数find_kth_smallest()を定義します。これは、root、count、k、を取ります。 ルートがNULLの場合、- NULLを返す left =find_kth_smallest(rootの左側、カウント、k) leftがNULLでない場合、- 左に戻る (カウントを1つ増やします) count
-
配列を分割する方法でk番目に小さい要素を見つけるC++プログラム
配列を分割する方法でk番目に小さい要素を見つけるC++プログラムを開発します。 アルゴリズム Begin Function CreatePartition() has an array a, and the lower l and upper limit h as arguments in := l and pi := h for i in range l to h, do if a[i] < a[pi], then