美文网首页
LintCode:1163 · 分糖果

LintCode:1163 · 分糖果

作者: alex很累 | 来源:发表于2021-12-30 15:20 被阅读0次

问题描述

给定长度为偶数的整数数组,该数组中不同的数字代表不同种类的糖果, 每个数字表示一种糖果。 您需要将这些糖果平均分配给弟弟和妹妹。 返回妹妹可以获得的糖果种类的最大数量。

备注:
1.所给数组的长度范围为[2, 10,000],且为偶数。
2.所给数组中数字的范围为[-100,000, 100,000]。

样例

输入: candies = [1,1,2,2,3,3]
输出: 3
解释:
有三种不同的糖果(1, 2 and 3), 每种糖果有两个。
最佳分法:妹妹拥有[1,2,3] ,弟弟也会拥有拥有[1,2,3]。
妹妹拥有3种不同的糖果。

解题思路

  1. 弟弟和妹妹是平分的。也就是说,假设有n个糖果(输入的数组长度是偶数),弟弟和妹妹每人必定分到n/2个糖果;
  2. 要求妹妹可以获得糖果种类的最大数量,那么我们必定要求出有多少种糖果,我们记为k
  3. 然后分析可能的几种情况:
    A. 糖果种类k大于允许分到的数量n/2,那么妹妹可以获得的糖果种类的最大数量为n/2;
    B. 糖果种类k小于等于允许分到的数量n/2,那么妹妹可以获得的糖果种类的最大数量为k
    换句话说,就是要取n/2k之间的min

代码示例(JAVA)

public class Solution {
    /**
     * @param candies: a list of integers
     * @return: return a integer
     */
    public int distributeCandies(int[] candies) {
        TreeSet<Integer> kinds = new TreeSet<Integer>();
        for (int candy: candies) {
            kinds.add(candy);
        }
        
        return Math.min(candies.length / 2, kinds.size());
    }
}

相关文章

  • LintCode:1163 · 分糖果

    问题描述 给定长度为偶数的整数数组,该数组中不同的数字代表不同种类的糖果, 每个数字表示一种糖果。 您需要将这些糖...

  • lintcode-分糖果

    空间复杂度O(n) 空间复杂度O(1)

  • initialize、load和init执行顺序

    执行代码 执行结果:[1163:402998] +[Person load][1163:402998] main:...

  • 分糖果

    给定一个偶数长度的数组,其中不同的数字代表着不同种类的糖果,每一个数字代表一个糖果。你需要把这些糖果平均分给一个弟...

  • 分糖果

    来源:力扣(LeetCode)链接:https://leetcode-cn.com/problems/distri...

  • lintcode35

    https://www.lintcode.com/contest/35/ Weighing Problem每次都分...

  • 1163

    看来我们是又吵架了 要怪谁呢 又好像谁也没有错 我有着轻微的起床气 昨晚睡太晚导致今天午休醒来整个人都是恍惚的 而...

  • 1163

    说:“请相信:真正能够治愈自己的只有你自己。不要抱怨,不要浮躁,不要害怕孤单,学会更好与寂寞相处,沉默却又努力。总...

  • 1163

    有人说:“能量比你低的人,会怀疑你、否定你、评判你、嫉妒你、攻击你;能量比你高的人,会理解你、包容你、成就你;能量...

  • 程序员常用的刷题网站

    1、Lintcode Lintcode.com——LintCode网站是国内较大的在线编程&测评网站。此网站提供各...

网友评论

      本文标题:LintCode:1163 · 分糖果

      本文链接:https://www.haomeiwen.com/subject/oabiqrtx.html