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

C++で最も低い値を持つK個のアイテムを検索します


この問題では、アイテムとその値、および整数kで構成されるリストが与えられます。私たちのタスクは、値が最も低いK個のアイテムを見つけることです。

問題の説明: リストから、値が最も低いk個のアイテムを見つける必要があります。

問題を理解するために例を見てみましょう

入力: item-value ={{item1、200}、{item2、100}、{item3、500}、{item4、400}} k =2

出力: item1、item2

説明:

値が最も小さい2つの要素は、200のitem1と100のitem2です。

ソリューションアプローチ

この問題の解決策は、値が最も小さいk個のアイテムを貪欲に見つけることです。まず、アイテムリストを値の昇順で並べ替えます。このソートされたリストから、k個の最小値のアイテムが見つかります。

ソリューションの動作を説明するプログラム

#include <bits/stdc++.h>
using namespace std;

bool compVal(pair<string, int> A, pair<string, int> B) {

   if (A.second == B.second)
      return A.first < B.first;
   return A.second < B.second;
}

int main() {

   int k = 2;
   int n = 3;
   vector<pair<string, int> > items;
   items.push_back(make_pair("item1", 350));
   items.push_back(make_pair("item2", 150));
   items.push_back(make_pair("item3", 500));
   items.push_back(make_pair("item4", 100));

   sort(items.begin(), items.end(), compVal);
   
   cout<<k<<" items with least value are \n";
   for (int i = 0; i < min(n, k); ++i)
      cout<<"Item : "<<items[i].first<<", value : "<<items[i].second<<endl;
   return 0;
}

出力

2 items with least value are
Item : item4, value : 100
Item : item2, value : 150

  1. C++の二分探索木で最小値のノードを見つけます

    1つの二分探索木があるとします。二分探索木で最小要素を見つける必要があります。したがって、BSTが以下のような場合- 最小要素は1になります。 左のサブツリーは常に小さい要素を保持していることがわかっています。したがって、左がnullになるまで左のサブツリーを何度もトラバースすると、最小の要素を見つけることができます。 例 #include<iostream> using namespace std; class node{    public:       node *left;      

  2. C++で指定された違いを持つペアを見つけます

    配列Aがあるとすると、n個の異なる要素があります。 xとyの差が与えられた差dと同じになるように、配列Aからペア(x、y)を見つける必要があります。要素のリストがA=[10、15、26、30、40、70]のようで、差が30の場合、ペアは(10、40)と(30、70)になります この問題を解決するために、配列がソートされていると仮定し、左から2つのポインターをポイント要素に取ります。最初は、最初の1つの「i」が最初の要素を指し、2番目の「j」がポイント要素を指します。 2番目の要素。 A [j] – A [i]がnと同じ場合、ペアを出力します。A[j] – A [i]