在 C++ 中查找 K 个值最小的项目


在这个问题中,我们得到一个包含项目及其值和整数 k 的列表。我们的任务是查找 K 个值最小的项目。

问题描述:我们需要从列表中找到 k 个值最小的项目。

让我们来看一个例子来理解这个问题:

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

输出:item1 , item2

解释:

两个值最小的元素是 item1 (200) 和 item2 (100)。

解决方案

解决这个问题的方法是贪婪地找到 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

更新于:2021年1月25日

77 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告