LeetCode算法题-Distribute Candies(Java实现)

Linux中断子系统(二)—— 通用框架处理 1、数据结构分析 (1)中断描述符结构structirq_desc: 1)打开CONFIG_SPARSE_IRQ宏(中断编号不连续),中断描述符以radix- tree来组织,用户在初始化时进行动态分配,然后再插入radix-tree中; 2)关闭CONFIG_SPARSE_IRQ宏(中断编号连续),中断描述符以数组的 形式组织,并且已经分配好; 3)不管哪种形式,最终都可以通过linuxirq号来找到对应的中断描述符; (2)stru... 阅读详情

这是悦乐书的第266次更新,第279篇原创

01 看题和准备

今天介绍的是LeetCode算法题中Easy级别的第133题(顺位题号是575)。给定具有偶数长度的整数数组,其中该数组中的不同数字表示不同种类的糖果。 每个数字表示相应种类的一种糖果。 您需要将这些糖果平均分配给哥哥妹妹。 返回妹妹可以获得的最多种类数量的糖果。例如:

输入:糖果= [1,1,2,2,3,3]
输出:3
说明:有三种不同的糖果(1,2和3),每种糖果两种。最佳分配:妹妹有糖果[1,2,3],哥哥也有糖果[1,2,3]。妹妹有三种不同的糖果。

输入:糖果= [1,1,2,3]
输出:2
说明:例如,妹妹有糖果[2,3],哥哥有糖果[1,1]。妹妹有两种不同的糖果,兄弟只有一种糖果。

注意:

  • 给定数组的长度在[2,100]范围内,并且是偶数。

  • 给定数组中的数字在 [-100000, 100000]范围内。

本次解题使用的开发工具是eclipse,jdk使用的版本是1.8,环境是win7 64位系统,使用Java语言编写和测试。

02 第一种解法

数组长度是偶数,要将里面的糖果平分给哥哥和妹妹,使得妹妹分到的糖果种类最多。妹妹要想分的糖果种类最多,分为三种情况:

第一,糖果种类和糖果数量的1/2相等,两人分的种类一样多。

第二,糖果种类大于糖果数量的1/2,妹妹得到的糖果种类,最多是糖果数量的1/2.

第三,糖果种类小于糖果数量的1/2,妹妹得到所有的种类。

所以,我们需要知道糖果种类和糖果数量的1/2之间的大小关系,就能直接得出妹妹可以得到的最大糖果种类。使用HashMap,以糖果种类为key,该种类的糖果数量为value,最后比较map的size与数组长度的1/2之间的大小。

public int distributeCandies(int[] candies) {
    Map<Integer, Integer> map = new HashMap<Integer, Integer>();
    for (int num : candies) {
        map.put(num, map.getOrDefault(num, 0)+1);
    }
    if (map.size() < candies.length/2) {
        return map.size();
    } 
    return candies.length/2;
}

03 第二种解法

其实我们并不需要知道每一个种类的糖果,它的数量有多少,我们只需要有多少种就行。所以,将第一种解法的HashMap替换成HashSet,同样对其size与数组长度的1/2比较大小。

public int distributeCandies2(int[] candies) {
    Set<Integer> set = new HashSet<Integer>();
    for (int num : candies) {
        set.add(num);
    }
    if (set.size() < candies.length/2) {
        return set.size();
    } 
    return candies.length/2;
}

04 第三种解法

我们也可以直接遍历数组元素,来获取其中的糖果种类,但是需要先排序,这样才能保证种类记数是有效的。

public int distributeCandies3(int[] candies) {
    Arrays.sort(candies);
    int count = 1;
    for (int i=1; i<candies.length; i++) {
        if (candies[i-1] != candies[i]) {
            count++;
        }
    }
    if (count < candies.length/2) {
        return count;
    } 
    return candies.length/2;
}

05 第四种解法

我们也可以不使用排序,使用一个新的数组,类型选择为布尔类型,此数组初始化时,全部元素值都为false,长度为200001,因为candies的取值范围是[-100000,100000],以candies的元素值加上100000作为新数组的索引,然后将新数组中的元素值改为true,count加1,最后比较count和数组长度的1/2的大小。

public int distributeCandies4(int[] candies) {
    boolean[] temp = new boolean[200001];
    int count = 0;
    for (int num : candies) {
        if (!temp[num+100000]) {
            count++;
            temp[num+100000] = true;
        }
    }
    return count < candies.length/2 ? count : candies.length/2;
}

06 小结

算法专题目前已日更超过四个月,算法题文章133+篇,公众号对话框回复【数据结构与算法】、【算法】、【数据结构】中的任一关键词,获取系列文章合集。

以上就是全部内容,如果大家有什么好的解法思路、建议或者其他问题,可以下方留言交流,点赞、留言、转发就是对我最大的回报和支持!

端到端自动驾驶的精准测试场景开发 1. 背景介绍 自动驾驶技术的发展正在改变交通运输的未来,然而,要实现安全可靠的自动驾驶,需要进行大量的测试和验证。端到端自动驾驶系统的测试场景开发是实现这一目标的关键。本文将详细介绍端到端自动驾驶的精准测试场景开发,包括核心概念、算法原理、数学模型、项目实践,以及未来发展趋势。 2. 核心概念与联系 阅读详情

相关推荐

具身智能与空天具身智能:从理论到实践的跨领域融合

本文深入探讨了具身智能从理论到实践的发展,重点分析了空天具身智能这一前沿领域。文章阐述了如何为AI赋予“身体”,使其通过与环境实时交互进化智能,并详细拆解了构建空天智能体所需的核心技术模块,包括多模态感知、基于大模型的决策规划以及鲁棒控制。同时,结合山区电力线自主巡检等实战案例,展望了多智能体协同与标准化等未来方向。

weixin_29045585的博客 532

【Python】【难度:简单】Leetcode 5384. 拥有最多糖果的孩子【完】

给你一个数组candies和一个整数extraCandies,其中candies[i]代表第 i 个孩子拥有的糖果数目。 对每一个孩子,检查是否存在一种方案,将额外的extraCandies个糖果分配给孩子们之后,此孩子有 最多的糖果。注意,允许有多个孩子同时拥有 最多的糖果数目。 示例 1: 输入:candies = [2,3,5,1,3], extraCandi...

thomashhs12的博客 804

如何浏览与下载全球免费的地图高分辨率(亚米级)的遥感影像?

前言 如果你想使用商业卫星的高分辨遥感影像,一般价格昂贵。我们可以使用地图平台上免费的高分辨率数据。目前数据源很多,比如说google earth、天地图、四维地球、必应地图等等。这些影像统一有一个共同点就是:RGB三波段;Web地图瓦片服务。这意味着我们可以通过瓦片服务下载影像,但下载的影像只有三个波段,分别是 一.引言 二、可使用高分辨率的地图数据源 1.Google Earth影像 2.Esri World Image 3.天地图 4.必...

锐多宝的地理空间 2万+

【leetcode题解】拥有最多糖果的孩子

一、题目描述 给你一个数组 candies 和一个整数 extraCandies ,其中 candies[i] 代表第 i 个孩子拥有的糖果数目。 对每一个孩子,检查是否存在一种方案,将额外的 extraCandies 个糖果分配给孩子们之后,此孩子有 最多 的糖果。注意,允许有多个孩子同时拥有 最多 的糖果数目。 示例 1: 输入:candies = [2,3,5,1,3], extraCandies = 3 输出:[true,true,true,false,true] 解释: 孩子 1 有

翱翔于世纪的博客 496

Pixhawk RPi CM4 Baseboard 树莓派CM4安装Ubuntu20.04 server 配置ros mavros mavsdk

cm4配置ros mavros连接pixhawk4 Pixhawk RPi CM4 Baseboard

baidu_41704597的博客 2127

了解随机振动疲劳分析中 Ansys nCode DesignLife 的平均应力校正

通过选择静态环境,我们可以将其结果视为疲劳计算的平均应力,如图 3 所示,因此从静态偏移载荷工况中提取的平均应力用于转移预测雨流计数中所有循环的平均值。您可以通过观看下面的教学视频获得宝贵的见解,该视频将指导您完成利用 Ansys nCode DesignLife 分析平均应力对随机振动载荷下结构的影响的过程。它基于 R 比率或平均应力水平。另一方面,平均应力校正可以帮助消除平均应力的负面影响,提高结果的保真度。Ansys nCode 提供先进的平均应力校正技术,使工程师能够考虑平均应力对疲劳寿命的影响。

jkh920184196的博客 1518

leetcode 1431.拥有最多糖果的孩子

原题内容: (2020年6月1日 每日一题) 给你一个数组 candies 和一个整数 extraCandies ,其中 candies[i] 代表第 i 个孩子拥有的糖果数目。 对每一个孩子,检查是否存在一种方案,将额外的 extraCandies 个糖果分配给孩子们之后,此孩子有 最多 的糖果。注意,允许有多个孩子同时拥有 最多 的糖果数目。 示例 1: 输入:candies = [2,3,5,1,3], extraCandies = 3 输出:[true,true,true,false,true] 解

zhuruihe2014的博客 384

P450酶催化循环的Amber-Gromacs混合模拟实战:从血红素加氧到产物释放

本文详细介绍了针对P450酶完整催化循环的Amber-Gromacs混合模拟实战策略。通过Amber为关键氧合血红素中间体(CPDI)构建精确力场,再利用Gromacs的高效GPU加速进行长时间尺度动力学模拟,完整覆盖从底物结合到产物释放的催化过程,为研究酶催化机制提供了强大的计算工具。

weixin_29201859的博客 314

强迫症刷leetcode(简单级)系列:1431.拥有最多糖果的孩子

如题 给你一个数组candies和一个整数extraCandies,其中candies[i]代表第 i 个孩子拥有的糖果数目。 对每一个孩子,检查是否存在一种方案,将额外的extraCandies个糖果分配给孩子们之后,此孩子有 最多的糖果。注意,允许有多个孩子同时拥有 最多的糖果数目。 https://leetcode-cn.com/problems/kids-with...

weixin_44716687的博客 335

8155平台multi-display(多屏显示)原理与配置

8155平台多屏互动原理与配置

漂流瓶の海岸 1605

AI自瞄原理剖析(四)从Yolo推理坐标到屏幕坐标:基于FOV视角与焦距的坐标变换与精准瞄准

从Yolo推理框架得到的坐标到屏幕坐标的转换是一个涉及到FOV视角、焦距以及分辨率的复杂过程。通过数学公式,我们可以将推理框坐标反推为游戏内的实际坐标,并最终映射到屏幕坐标系中。利用这些信息,AI自瞄系统能够精确计算出准星从当前位置移动到敌人位置的距离,实现精准的自动瞄准。通过这种方法,AI自瞄系统能够在不同的游戏环境下灵活应对,提供高度精确的操作体验。在AI自瞄系统中,目标检测仅仅是第一步,获取到预测框的坐标后,我们还需要将这些坐标转换为实际屏幕上的精确位置。

代码简单说 Vue、JAVA、PHP、Node.js 熟练运用,接口、架构、性能全搞定。 1333

LeetCode|1431.拥有最多糖果的孩子

题目: 给你一个数组 candies 和一个整数 extraCandies ,其中 candies[i] 代表第 i 个孩子拥有的糖果数目。 对每一个孩子,检查是否存在一种方案,将额外的 extraCandies 个糖果分配给孩子们之后,此孩子有 最多 的糖果。注意,允许有多个孩子同时拥有 最多 的糖果数目。 示例 1: 输入:candies = [2,3,5,1,3], extraCandies = 3 输出:[true,true,true,false,true] 解释: 孩子 1 有 2 个糖果,如果他

小黄的博客 363

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

LeetCode 1103. Distribute Candies to People (Java版; Easy)

welcome to my blog LeetCode 1103. Distribute Candies to People (Java版; Easy) 题目描述 We distribute some number of candies, to a row of n = num_people people in the following way: We then ...

littlehaes的博客 372

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

【刷leetcode,拿Offer-008】575. Distribute Candies(贪心)

题目链接 题面: 575. Distribute Candies DescriptionHintsSubmissionsDiscussSolution DiscussPick One Given an integer array withevenlength, where different numbers in this array represent differen...

David_Jett 865

【Lintcode】1163. Distribute Candies

题目地址: https://www.lintcode.com/problem/distribute-candies/description 给定一个长nnn为偶数的数组AAA,每个数字代表一种类型的糖果。现在要把这nnn个糖果平均分给两个人甲和乙,问甲能得到的最大的糖果种类数是多少。 他能得到的最大糖果数就是糖果种类数和n/2n/2n/2的更小者。代码如下: import java.util.HashSet; import java.util.Set; public class Solution {

数学、算法爱好者的博客 163

leetcode (Distribute Candies)

Title:Distribute Candies    575 Difficulty:Easy 原题leetcode地址: https://leetcode.com/problems/distribute-candies/   1.  采用set保存糖果种类 时间复杂度:O(n),一次一层循环。 空间复杂度:O(n),申请Set。 /** * 采用set集合保存糖...

hsx1612727380的专栏 224

Leetcode——575. Distribute Candies

题目原址 https://leetcode.com/problems/distribute-candies/description/ 题目描述 Given an integer array with even length, where different numbers in this array represent different kinds of candies. Each n...

想当厨子的程序媛 176

LeetCode: 575. Distribute Candies

LeetCode: 575. 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 corresp

qha0731的专栏 280

Leetcode【1103】 Distribute Candies to People(Python版)

返回的是一个固定长度的列表,在python中,无法通过像java的初始化数组来实现,那么就必须赋值 ans = [0] * num_people 然后定义一个变量give表示每次给的糖果数,这个数每次都会+1 把give和总人数取余,就是索引,因为要不停的遍历每个孩子,假设4个孩子,索引就是0,1,2,3,0,1,2,3,...... class Solution: def d...

ssjdoudou的博客 4672

【LeetCode】575. Distribute Candies 解题报告(Java & Python)

【LeetCode】Distribute Candies 解题报告标签(空格分隔): LeetCode题目地址:https://leetcode.com/problems/distribute-candies/#/description题目描述:Given an integer array with even length, where different numbers in this array

负雪明烛 2997

leetcode 575. 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 the

淡然坊 420

LeetCode 575. Distribute Candies

LeetCode 575. Distribute Candies (Easy) 主要知识点:Set;优先级:0

温迪今天刷题了吗 235

LeetCode【#575】Distribute Candies

题目链接: 点击跳转 题目: Given an integer array withevenlength, where different numbers in this array represent differentkindsof candies. Each number means one candy of the corresponding kind. You ne...

Mikchy的博客 207

【Leetcode】575. Distribute Candies

题目地址: https://leetcode.com/problems/distribute-candies/ Alice有nnn个糖果,第iii个糖果的种类是c[i]c[i]c[i],她想吃不同种类的糖果,最多吃n/2n/2n/2个。问她最多能吃多少个糖果。 代码如下: import java.util.HashSet; import java.util.Set; public class Solution { public int distributeCandies(int[] candyTy

数学、算法爱好者的博客 189

[LeetCode]575.Distribute Candies

题目大意:点击打开链接 思路:sister能得到一半数量的糖果,如果得到的每一个糖果都是一个不同的种类,sister能得到candies.length/2种糖果,这也是最大值。           [1,2,3,3,4,4],这种情况能得到candies.length/2种           [1,1,1,2,2,2],这种情况能得到set.size()种 public class So

offerkkl的博客 393

[leetcode]575. 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 the

kangbin825的专栏 1716
上一篇: LeetCode算法题-Subtree of Another Tree(Java实现)
下一篇: LeetCode算法题-Shortest Unsorted Continuous Subarray(Java实现)
程序员小川
博客等级 码龄10年 47粉丝 305原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值