LeetCode-1342. Reduce Array Size to The Half

网友投稿 862 2022-10-03

LeetCode-1342. Reduce Array Size to The Half

LeetCode-1342. Reduce Array Size to The Half

Given an array ​​arr​​.  You can choose a set of integers and remove all the occurrences of these integers in the array.

Return the minimum size of the set so that at least half of the integers of the array are removed.

Example 1:

Input: arr = [3,3,3,3,5,5,5,2,2,7]Output: 2Explanation: Choosing {3,7} will make the new array [5,5,5,2,2] which has size 5 (i.e equal to half of the size of the old array).Possible sets of size 2 are {3,5},{3,2},{5,2}.Choosing set {2,7} is not possible as it will make the new array [3,3,3,3,5,5,5] which has size greater than half of the size of the old array.

Example 2:

Input: arr = [7,7,7,7,7,7]Output: 1Explanation: The only possible set you can choose is {7}. This will make the new array empty.

Example 3:

Input: arr = [1,9]Output: 1

Example 4:

Input: arr = [1000,1000,3,7]Output: 1

Example 5:

Input: arr = [1,2,3,4,5,6,7,8,9,10]Output: 5

Constraints:

​​1 <= arr.length <= 10^5​​​​arr.length​​ is even.​​1 <= arr[i] <= 10^5​​

题解:

贪心。

class Solution {public: int minSetSize(vector& arr) { int n = arr.size(); vector num(100001, 0); for (int i = 0; i < n; i++) { num[arr[i]]++; } sort(num.begin(), num.end()); int res = 0, k = 0, i = 100000; while (i > 0) { k += num[i]; res++; if (k >= n / 2) { return res; } i--; } return res; }};

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:一个完整的小程序需要什么功能(做一个完整的小程序需要哪些技术?)
下一篇:LeetCode-1325. Delete Leaves With a Given Value
相关文章

 发表评论

暂时没有评论,来抢沙发吧~