575. 分糖果

122 阅读1分钟

题目:
Alice 有 n 枚糖,其中第 i 枚糖的类型为 candyType[i] 。Alice 注意到她的体重正在增长,所以前去拜访了一位医生。

医生建议 Alice 要少摄入糖分,只吃掉她所有糖的 n / 2 即可(n 是一个偶数)。Alice 非常喜欢这些糖,她想要在遵循医生建议的情况下,尽可能吃到最多不同种类的糖。

给你一个长度为 n 的整数数组 candyType ,返回: Alice 在仅吃掉 n / 2 枚糖的情况下,可以吃到糖的 最多 种类数。

来源:力扣(LeetCode) 链接:leetcode.cn/problems/di… 著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
算法:

func distributeCandies(candyType []int) int {

    maxType := len(candyType) / 2

    m := make(map[int]struct{})

    cnt  := 0

    for i := range candyType {

        if _, ok := m[candyType[i]]; !ok {

            cnt ++

             if cnt >= maxType {

                 return maxType

             }

            m[candyType[i]] = struct{}{}

        }

    }

    return cnt

}

\