C++ 中分配糖果


假設我們有一個長度為偶數的陣列,陣列中不同的數字代表不同種類的糖果。每個數字表示對應種類的一顆糖果。我們需要將糖果數量平均分配給兄弟姐妹。我們需要找到妹妹可以收到的糖果種類的最大數量。

所以,如果輸入類似於 [1,1,2,3],則輸出將為 2,因為如果我們考慮妹妹有糖果 [2,3],而哥哥有糖果 [1,1]。現在妹妹有兩種不同種類的糖果,哥哥只有一種糖果。

為了解決這個問題,我們將遵循以下步驟:

  • 定義一個集合 s

  • 初始化 i := 0,當 i < 糖果陣列大小 時,更新 (i 增加 1),執行:

    • 將 candies[i] 插入到 s 中

  • 返回 s 的大小和糖果陣列大小 / 2 的最小值

示例

讓我們看看以下實現,以便更好地理解:

線上演示

#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
   int distributeCandies(vector<int>& candies){
      unordered_set<int> s;
      for (int i = 0; i < candies.size(); i++)
         s.insert(candies[i]);
      return min(s.size(), candies.size() / 2);
   }
};
main(){
   Solution ob;
   vector<int> v = {1,1,2,3};
   cout << (ob.distributeCandies(v));
}

輸入

{1,1,2,3}

輸出

2

更新於: 2020年6月11日

227 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.