配列内のK番目に大きい要素
このアルゴリズムは、一連のデータから、配列の最大の要素からk番目に大きい要素を見つけます。
この問題は、配列を並べ替えることで簡単に解決できます。昇順または降順で並べ替えることができます。降順で解くと、最初のk個の要素を取得して結果を見つけることができます。
入力と出力
Input: The elements of an array: {1, 23, 12, 9, 30, 2, 50, 63, 87, 12, 45, 21}, K = 4 Output: 4 largest elements are 87 63 50 45
アルゴリズム
kthLargestElement(array, n, k)
入力: 配列、配列内の要素の数、kを配置します。
出力: 配列の最大要素からk番目に大きい要素を表示します。
Begin sort the array in descending order for i := 0 to k-1, do display array[i] done End
例
#include<iostream> #include<algorithm> using namespace std; bool compare(int a, int b) { return a>b; } void kthLargestElement(int array[], int n, int k) { sort(array, array+n, compare); for (int i = 0; i < k; i++) //largest to kth largest element cout << array[i] << " "; } int main() { int array[] = {1, 23, 12, 9, 30, 2, 50, 63, 87, 12, 45, 21}; int n = 12; int k = 4; kthLargestElement(array, n, k); }
出力
87 63 50 45
-
PythonのストリームでK番目に大きい要素
ストリーム内でk番目に大きい要素を見つけるクラスを設計するとします。これは、ソートされた順序でk番目に大きい要素であり、k番目の個別の要素ではありません。 KthLargestクラスには、整数kと配列numsを受け入れるコンストラクターがあり、ストリームからの初期要素が含まれます。 KthLargest.addメソッドを呼び出すたびに、ストリーム内でk番目に大きい要素を表す要素が返されます。 したがって、入力がk =3、初期要素=[4,5,8,2]のような場合は、add(3)、add(5)、add(10)、add(9)、add(4)を呼び出します。 。の場合、出力はそれぞれ4、5、5、8、
-
Pythonの配列内のK番目に大きい要素
ソートされていない配列があるとすると、その配列からk番目に大きい要素を見つける必要があります。したがって、配列が[3,2,1,5,6,4]でk =2の場合、結果は5になります。 これを解決するには、次の手順に従います- 要素を並べ替えます kが1の場合は最後の要素を返し、そうでない場合はarray [n –k]を返します。nは配列のサイズです。 理解を深めるために、次の実装を見てみましょう- 例 class Solution(object): def findKthLargest(self, nums, k): nu