LeetCode575. 分糖果

编程入门 行业动态 更新时间:2024-10-18 00:26:34

LeetCode575. 分<a href=https://www.elefans.com/category/jswz/34/1761997.html style=糖果"/>

LeetCode575. 分糖果

Alice 有 n 枚糖,其中第 i 枚糖的类型为 candyType[i] 。Alice 注意到她的体重正在增长,所以前去拜访了一位医生。

医生建议 Alice 要少摄入糖分,只吃掉她所有糖的 n / 2 即可(n 是一个偶数)。Alice 非常喜欢这些糖,她想要在遵循医生建议的情况下,尽可能吃到最多不同种类的糖。

给你一个长度为 n 的整数数组 candyType ,返回: Alice 在仅吃掉 n / 2 枚糖的情况下,可以吃到糖的最多种类数。

示例 1:

输入:candyType = [1,1,2,2,3,3]
输出:3
解释:Alice 只能吃 6 / 2 = 3 枚糖,由于只有 3 种糖,她可以每种吃一枚。
示例 2:

输入:candyType = [1,1,2,3]
输出:2
解释:Alice 只能吃 4 / 2 = 2 枚糖,不管她选择吃的种类是 [1,2]、[1,3] 还是 [2,3],她只能吃到两种不同类的糖。
示例 3:

输入:candyType = [6,6,6,6]
输出:1
解释:Alice 只能吃 4 / 2 = 2 枚糖,尽管她能吃 2 枚,但只能吃到 1 种糖。
 

提示:

n == candyType.length
2 <= n <= 104
n 是一个偶数
-105 <= candyType[i] <= 105

来源:力扣(LeetCode)
链接:力扣
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

 方法一:暴力法(一分钟不假思索版)

特点:代码简单,可读性尚可,但性能感人T.T

思路:

  • Alice最多可分到总数的一半,多一个的糖果种类;
  • Alice最多可分到所有的糖果的种类;
  • 两者取其小

相关代码片段:C#字符串去除串内重复字符

public class Solution 
{public int DistributeCandies(int[] candyType) {return HleetCode.N575DistributeCandies.Commit(candyType);}public static partial class HleetCode{public static class N575DistributeCandies{public static int Commit(int[] candyType){//计算可能的结果int possibleCount=candyType.Length/2;//数组去重var array=candyType.Distinct().ToArray();//上面两个取最小值return array.Length<possibleCount?array.Length:possibleCount;}}} 
}

官方题解:

特点:用到了HashSet<int>()去重,但效率好像也就那样

(这就是所谓的贪心算法吗?和我本质也的没啥区别,还是多刷点贪心算法的题吧!)

public class Solution {public int DistributeCandies(int[] candyType) {ISet<int> set = new HashSet<int>();foreach (int candy in candyType) {set.Add(candy);}return Math.Min(set.Count, candyType.Length / 2);}
}

更多推荐

LeetCode575. 分糖果

本文发布于:2024-02-06 17:23:07,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1750231.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:糖果

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!