不同整数的最少数目

给你一个整数数组 arr 和一个整数 k 。现需要从数组中恰好移除 k 个元素,请找出移除后数组中不同整数的最少数目。
示例 1:
输入:arr = [5,5,4], k = 1
输出:1
解释:移除 1 个 4 ,数组中只剩下 5 一种整数。

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

  1. /**
  2. * @param {number[]} arr
  3. * @param {number} k
  4. * @return {number}
  5. */
  6. var findLeastNumOfUniqueInts = function(arr, k) {
  7. let obj= {}
  8. for(let i = 0; i < arr.length; i++){
  9. if(obj[arr[i]]){
  10. obj[arr[i]]++
  11. }else{
  12. obj[arr[i]] = 1
  13. }
  14. }
  15. console.log(obj)
  16. let main = Object.values(obj).sort((a,b) =>{
  17. return a-b
  18. })
  19. // main.forEach(item =>{
  20. // k -= item
  21. // if(k >= 0){
  22. // for(let key in obj){
  23. // if(obj[key] == item){
  24. // delete obj[key]
  25. // break
  26. // }
  27. // }
  28. // }
  29. // })
  30. for(var i=0; i<main.length; i++){
  31. k-=main[i];
  32. if(k>=0){
  33. for(var key in obj){
  34. if(obj[key]==main[i]){
  35. delete obj[key];
  36. break;
  37. }
  38. }
  39. }else if(k<0){
  40. break;
  41. }
  42. }
  43. return Object.keys(obj).length
  44. };