プログラミング
 Computer >> コンピューター >  >> プログラミング >> プログラミング

配列内の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

  1. 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、

  2. 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