每日一题 力扣 1090 https://leetcode.cn/problems/largest-values-from-labels/
阅读原文时间:2023年07月08日阅读:3
每日一题 力扣 1090 https://leetcode.cn/problems/largest-values-from-labels/

先对这道题目进行排序,贪心一下,要求分数最高的放在前面,而标签是不管的,标签只是一个限制作用

核心代码如下

/**
*
* @param values
* @param labels
* @param numWanted size<=numWanted * @param useLimit   same labels < useLimit * @return */ public int largestValsFromLabels(int[] values, int[] labels, int numWanted, int useLimit) { ​    if (useLimit==0||numWanted==0){        return 0;   } ​ ​ //   按照values排序    int n=values.length;    int[][] nums = new int[n][2];    for (int i = 0; i < n; i++) {        nums[i]=new int[]{values[i],labels[i]};   } ​    Arrays.sort(nums,(o1,o2)->{

       if (o1[0]!=o2[0]){
           return o2[0]-o1[0];
      }else {
           return o2[1]-o1[1];
      }
  });


//   拿最多numWanted
   int sum=0;
   int size=0;
   int sameLabel=0;
   HashMap map = new HashMap<>();

   for (int i = 0; i < nums.length ; i++) {

       if (size<numWanted){
       //   可以尝试放进来



           Integer pre = map.getOrDefault(nums[i][1], 0);
           if (pre<useLimit){
           //   可以放进来
               map.put(nums[i][1],pre+1);
               sum+=nums[i][0];
               size++;
          }else {
           //   重复了 不让放

          }

      }else {
           break;
      }



  }


   return sum;

}

手机扫一扫

移动阅读更方便

阿里云服务器
腾讯云服务器
七牛云服务器

你可能感兴趣的文章