天天看點

第一天:Leetcode刷題【分糖果】(貪心);

第一天注冊部落格,第一天寫,欸嘿,哈哈哈

主要是分享一下Leetcode刷題哦,本人程式設計小白倘若有緣人看見了有不對的,請多多擔待,萬分感謝。

題目:

給定一個偶數長度的數組,其中不同的數字代表着不同種類的糖果,每一個數字代表一個糖果。

你需要把這些糖果平均分給一個弟弟和一個妹妹。傳回妹妹可以獲得的最大糖果的種類數。

示例 1:

輸入: candies = [1,1,2,2,3,3]

輸出: 3

解析: 一共有三種種類的糖果,每一種都有兩個。

最優配置設定方案:妹妹獲得[1,2,3],弟弟也獲得[1,2,3]。這樣使妹妹獲得糖果的種類數最多。

示例 2 :

輸入: candies = [1,1,2,3]

輸出: 2

解析: 妹妹獲得糖果[2,3],弟弟獲得糖果[1,1],妹妹有兩種不同的糖果,弟弟隻有一種。這樣使得妹妹可以獲得的糖果種類數最多。

注意:

數組的長度為[2, 10,000],并且确定為偶數。

數組中數字的大小在範圍[-100,000, 100,000]内。

思路:

1、給定的數組為偶數,設糖果的總數為x,妹妹分到的糖果最多且最多為x/2!

2、設給定數組中糖果的種類為y,倘若y>x/2  則輸出的結果為 x/2 ; 倘若y=x/2 則輸出的結果為 x/2 ; 倘若y<x/2 則輸出的結果y;

class Solution {

    public int distributeCandies(int[] candyType) {

        Set<Integer> set = new HashSet<>();

        for(int candy:candyType){

            set.add(candy);

        }

        return Math.min(set.size(),candyType.length/2);

    }

}

繼續閱讀