每日一题 力扣 1090 https://leetcode.cn/problems/largest-values-from-labels/

每日一题 力扣 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<Integer, Integer> 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;

}
 
posted @   故里oc  阅读(65)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
点击右上角即可分享
微信分享提示