leetcode打卡——去重之575. 分糖果

Posted C_YCBX Py_YYDS

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了leetcode打卡——去重之575. 分糖果相关的知识,希望对你有一定的参考价值。

题目

题目解析

看完题目很快想到先计数出种类个数,然后直接可以得出答案了。。

那么计数的方式最快的当然是哈希。

而哈希中最快的当然是原生数组哈希,由于给出了数据范围,所以可以直接用原生数组哈希!

关于原生数组哈希,就不得不提一嘴bitset,具体使用的文档在这里:bitset文档

解题代码

unordered_set法

class Solution {
public:
    int distributeCandies(vector<int>& candyType) {
        int sz = candyType.size();
        unordered_set<int>t(begin(candyType),end(candyType));
        int cnt = t.size();
        return 2*cnt>sz?sz/2:cnt;
    }
};

bitset法

这里由于数据范围是-100000~100000所以为了不产生负数,所以+100000。

class Solution {
public:
    int distributeCandies(vector<int>& candyType) {
        bitset<200005> s;
        for(int x: candyType) if(!s[x+100000]) s.set(x+100000);
        return min(candyType.size() / 2, s.count());
    }
};

以上是关于leetcode打卡——去重之575. 分糖果的主要内容,如果未能解决你的问题,请参考以下文章

575. 分糖果『简单』

LeetCode 575. 分糖果

LeetCode 575. 分糖果 / 237. 删除链表中的节点 / 407. 接雨水 II

575. 分糖果思维

58同城笔试题:数组去重;分饼干(分糖果);最小路径和(leetcode64)

解题报告Leecode. 575. 分糖果——Leecode每日一题系列