js实现 不同整数的最少数目归结

给定一个整数数组 arr 和一个整数 k 。现需要从数组中恰好移除 k 个元素,请找出移除后数组中不同整数的最少数目。

输入:arr = [5,5,4], k = 1 输出:1 解释:移除 1 个 4 ,数组中只剩下 5 一种整数。

输入:arr = [4,3,1,1,3,3,2], k = 3
输出:2
解释:先移除 4、2 ,然后再移除两个 1 中的任意 1 个或者三个 3 中的任意 1 个,最后剩下 1 和 3 两种整数。

 

var findLeastNumOfUniqueInts = function(arr, k) {

    var obj={};

    arr.forEach(function(item){

        if(obj[item]){

            obj[item]++;

            }else{

               obj[item]=1; 

            }

    });

    var mid=Object.values(obj).sort(function(a,b){

        return a-b;

    })   

   for(var i=0; i<mid.length; i++){

       k-=mid[i];

       if(k>=0){

           for(var key in obj){

               if(obj[key]==mid[i]){

                   delete obj[key];

                   break;

              }               

           }

       }else if(k<0){

           break;

       }

   }

   return Object.keys(obj).length;

};

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值