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],妹妹有兩種不同的糖果,弟弟只有一種。這樣使得妹妹可以獲得的糖果種類數最多。

注意:

  1. 數組的長度為[2, 10,000],並且確定為偶數。
  2. 數組中數字的大小在範圍[-100,000, 100,000]內。

這道題的重點在於 數組偶數長度,平均分配,妹妹獲得最大糖果的種類數

我們可以使用一個set存儲數組遍歷的結果(因為set中不能存在重複元素)

那麼,如果種類超過一半,那麼保證妹妹拿到的每一個都是不重複的,即candies.length/2

如果種類不超過一半,則妹妹只能拿到所有的種類,即set.size();

Range17/Java-practise?

github.com

其實一開始的時候一直奔著輸出種類去的,如果是要輸出種類的話可以使用一個迭代器將set中的元素迭代出來,再使用一個長度為candies.length/2的數組存儲,最後輸出便可以了。

一段時間沒寫代碼思路真的會很慢的啊....

推薦閱讀:

不過是糖果,卻把所有人美哭了...
糖果串珠作法,橘子片作法,香蕉,小鴨
PS教程 | 打造清新可愛的糖果文字
糖果髮飾

TAG:糖果 | 數學 | 自然科學 |