Leetcode Note: Go - Distribute Candies

Distribute Candies - LeetCode
https://leetcode.com/problems/distribute-candies/

  • Go 言語で取り組んだメモ

所感

  • int 配列 candyType が渡されるので、食べられるキャンディー種類の最大数を int で return する
  • キャンディーの数 n / 2 だけ食べれる
    • n は常に偶数であることを保証
  • できるだけ様々なキャンディーを食べれるように振る舞う

回答

Distribute Candies - LeetCode
https://leetcode.com/problems/distribute-candies/solution/

func distributeCandies(candyType []int) int {
    res := 0
    eatable := len(candyType) / 2
    m := make(map[int]bool)

    for _, value := range candyType {
        candy := value
        if _, ok := m[candy]; !ok {
            m[candy] = true
            res++
            if res == eatable {
                return eatable
            }
        }
    }
    
    return res
}
  • hash map 使って candyType が既出か判定
  • あとは食べられる最大値にリーチするかチェックすれば OK