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