本文主要是介绍Distribute Candies问题及解法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
问题描述:
Given an integer array with even length, where different numbers in this array represent different kinds of candies. Each number means one candy of the corresponding kind. You need to distribute these candies equally in number to brother and sister. Return the maximum number of kinds of candies the sister could gain.
示例:
Input: candies = [1,1,2,2,3,3] Output: 3 Explanation: There are three different kinds of candies (1, 2 and 3), and two candies for each kind. Optimal distribution: The sister has candies [1,2,3] and the brother has candies [1,2,3], too. The sister has three different kinds of candies.
Input: candies = [1,1,2,3] Output: 2 Explanation: For example, the sister has candies [2,3] and the brother has candies [1,1]. The sister has two different kinds of candies, the brother has only one kind of candies.问题分析:
本题主要是比较糖果种类的数目和总数目一半的大小。
过程详见代码:
class Solution {
public:int distributeCandies(vector<int>& candies) {int res = 0;int len = candies.size();map<int,int> m;for(int i = 0; i < len; i++){if(m.count(candies[i]) == 0) {m.insert(pair<int,int>(candies[i],1));res++;}}return min(res,(len / 2));}
};
这篇关于Distribute Candies问题及解法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!