typedef struct mynode{
int val;
int lab;
} Node;
int cmp(Node *a, Node *b){
if(b->val != a->val){
return b->val - a->val;
}
return b->lab - a->lab;
}
int largestValsFromLabels(int* values, int valuesSize,
int* labels, int labelsSize,
int num_wanted, int use_limit){
int i, j, cnt=0, last_lab = INT_MAX, last_cnt = 0, val=0;
Node n[valuesSize];
int num_cnt[20004];
memset(num_cnt, 0, sizeof(num_cnt));
for(i=0; i<valuesSize; i++){
n[i].val = values[i];
n[i].lab = labels[i];
}
qsort(n, valuesSize, sizeof(Node), cmp);
for(i=0; i<valuesSize; i++){
if(num_cnt[n[i].lab] >= use_limit) continue;
num_cnt[n[i].lab]++;
val += n[i].val;
cnt++;
if(cnt >= num_wanted)
break;
}
return val;
}
leetcode-1090. 受标签影响的最大值-C语言
最新推荐文章于 2022-12-30 21:30:19 发布