受标签影响的最大值
贪心思想的运用,以及会使用合理的数据结构进行组织
AC code
class Solution {
public:
typedef pair<int,int> PII;
int largestValsFromLabels(vector<int>& values, vector<int>& labels, int numWanted, int useLimit) {
//贪心地选择价值最大且不超过数量限制的元素
int n = values.size();
vector<PII> pairs(n);
for(int i=0;i<n;i++){
pairs[i]={values[i],labels[i]};
}
sort(pairs.begin(),pairs.end(),greater<PII>());
unordered_map<int,int> cnt;
int ans=0,num=0;
for(int i=0;i<n&&num<numWanted;i++){
int v=pairs[i].first,l=pairs[i].second;
if(cnt[l]<useLimit){
cnt[l]++;
num++;
ans+=v;
}
}
return ans;
}
// bool cmp(PII a,PII b){
// return a.first>b.first;
// }
};