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
廣告
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP