leetcode每日一題(分糖果)
08-17
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]內。
這道題的重點在於 數組偶數長度,平均分配,妹妹獲得最大糖果的種類數
我們可以使用一個set存儲數組遍歷的結果(因為set中不能存在重複元素)
那麼,如果種類超過一半,那麼保證妹妹拿到的每一個都是不重複的,即candies.length/2
如果種類不超過一半,則妹妹只能拿到所有的種類,即set.size();
Range17/Java-practise其實一開始的時候一直奔著輸出種類去的,如果是要輸出種類的話可以使用一個迭代器將set中的元素迭代出來,再使用一個長度為candies.length/2的數組存儲,最後輸出便可以了。
一段時間沒寫代碼思路真的會很慢的啊....
推薦閱讀:
※不過是糖果,卻把所有人美哭了...
※糖果串珠作法,橘子片作法,香蕉,小鴨
※PS教程 | 打造清新可愛的糖果文字
※糖果髮飾