LeetCode 575.分糖果:min(type, size/2)

【LetMeFly】575.分糖果:min(type, size/2)

力扣题目链接:https://leetcode.cn/problems/distribute-candies/

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

解题方法:比较

限制Alice能吃到糖的种类的因素有两个:

  1. 糖本身的种类——无论Alice使用什么策略都无法突破糖原本种类数的限制;
  2. 糖的总个数——医生让她最多吃一半数量的糖。

因此最终答案为 min ⁡ ( t y p e , s i z e 2 ) \min(type, \frac{size}2) min(type,2size)

  • 时间复杂度 O ( s i z e ) O(size) O(size)
  • 空间复杂度 O ( s i z e ) O(size) O(size)

AC代码

C++
class Solution {
public:int distributeCandies(vector<int>& candyType) {set<int> se(candyType.begin(), candyType.end());return min(se.size(), candyType.size() / 2);}
};
Go
package mainfunc min(a int, b int) int {if a <= b {return a}return b
}func distributeCandies(candyType []int) int {se := make(map[int]int)for _, t := range candyType {se[t] = 0}return min(len(se), len(candyType) / 2)
}
Java
// import java.util.HashSet;
// import java.util.Set;class Solution {public int distributeCandies(int[] candyType) {Set<Integer> se = new HashSet<>();for (int t : candyType) {se.add(t);}return Math.min(se.size(), candyType.length / 2);}
}
Python
# from typing import Listclass Solution:def distributeCandies(self, candyType: List[int]) -> int:return min(len(set(candyType)), len(candyType) // 2)

同步发文于CSDN和我的个人博客,原创不易,转载经作者同意后请附上原文链接哦~

Tisfy:https://letmefly.blog.csdn.net/article/details/139387726

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/21001.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从集合论到位运算

前言 本文将扫清位运算的迷雾&#xff0c;在集合论与位运算之间建立一座桥梁。 在高中&#xff0c;我们学了集合论&#xff08;set theory&#xff09;的相关知识。例如&#xff0c;包含若干整数的集合 S{0,2,3}。在编程中&#xff0c;通常用哈希表&#xff08;hash table&…

自然资源-农村土地流转知识全解

自然资源-农村土地流转知识全解 随着农村经济的发展和城市化进程的加快&#xff0c;农村土地面临着多方面的压力&#xff0c;如人口增长、城市扩张、环境恶化等。这些压力导致了农村土地利用率低、经济效益差、农民收入水平低、农村社会经济不发达等问题。因此&#xff0c;改变…

C语言PTA练习题(期末考试成绩排名,新生舞会,约瑟夫游戏(序号+姓名+密码),排队点名)

7-1 期末考试成绩排名 期末考试结束了&#xff0c;数学成绩已经出来&#xff0c;数学老师请你帮忙编写一个程序&#xff0c;可以帮助老师对班级所有同学的考试分数按照由高到第低进行排序&#xff0c;并输出按照成绩排序后每个同学的学号、姓名、数学成绩。 输入格式: 第一行…

Vue.js的核心概念:如何理解Vue.js的声明式渲染、组件系统、Vue实例、Vue生命周期等核心概念。

介绍Vue.js Vue.js的由来 Vue.js是由前Google工程师尤雨溪(Evan You)在2014年开发并发布的。尤雨溪在Google任职期间,主要使用AngularJS进行开发工作,但他觉得AngularJS有些部分过于复杂,因此他决定开发一个轻量且更易于理解的库,这就是Vue.js的诞生。 Vue.js的特点 …

计算机网络学习2

文章目录 信道复用技术 第三章数据链路层概述数据链路层的三个重要问题封装成帧和透明传输差错检测可靠传输的相关基本概念可靠传输的实现机制停止等待协议回退N帧协议选择重传协议 点对点协议PPP共享式以太网网络适配器和MAC地址CSMA_CD协议的基本原理共享式以太网的争用期共享…

备战十一届大唐杯国赛预选赛

这次省赛带了太多个省一了&#xff0c;具体可看下面的图片&#xff0c;只放了一部分。目前根据可靠消息&#xff0c;应该还有个预选赛和去年一样&#xff0c;就是还会考一次仿真。如果说通过了就是国二起步然后去北方工业争夺国一国二&#xff0c;没过的话就是国三。 每…

<MySQL> 表的增删改查 - 基本查询

目录 前言&#xff1a; 一、表的插入 &#xff08;一&#xff09;指定列插入和多行插入 &#xff08;二&#xff09;全列插入 &#xff08;三&#xff09;插入选择更新 &#xff08;四&#xff09;替换数据 二、表中的数据查询 &#xff08;一&#xff09;select查询语…

【SQL学习进阶】从入门到高级应用【三范式】

文章目录 什么是数据库设计三范式三范式一对多怎么设计多对多怎么设计一对一怎么设计最终的设计 &#x1f308;你好呀&#xff01;我是 山顶风景独好 &#x1f495;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01; &#x1f495;希望您在这里可以感受到一份…

sql注入-布尔盲注

布尔盲注&#xff08;Boolean Blind SQL Injection&#xff09;是一种SQL注入攻击技术&#xff0c;用于在无法直接获得查询结果的情况下推断数据库信息&#xff1b;它通过发送不同的SQL查询来观察应用程序的响应&#xff0c;进而判断查询的真假&#xff0c;并逐步推断出有用的信…

低代码选型要注意什么问题?

低代码选型时&#xff0c;确实需要从多个角度综合考虑&#xff0c;以下是根据您给出的角度进行的分析和建议&#xff1a; 公司的人才资源&#xff1a; 评估团队中是否有具备编程能力的开发人员&#xff0c;以确保能够充分利用低代码平台的高级功能和进行必要的定制开发。考察实…

告别繁琐SQL,4K星开源神器让数据库管理像聊天一样简单!

大家好&#xff0c;今天我要给大家介绍一个超级棒的开源项目——SQL Chat。如果你是一名开发者&#xff0c;数据库管理员&#xff0c;或者对数据分析感兴趣&#xff0c;那你绝对不能错过这个神器。SQL Chat&#xff0c;一个近4K星的GitHub项目&#xff0c;它将彻底改变你与数据…

本地安装AI大模型

使用ollmam安装llmama3等模型 1.打开ollmam下载对应系统的软件&#xff0c;安装即可 官网&#xff1a;Ollama&#xff0c; 安装直接点就就行了&#xff0c;没有其他操作 2.安装模型 在官网找到对于的模型下载命令 记录命令:ollama run llama3 打开一个cmd窗口&#xff0c;输…

【已解决】HtmlWebpackPlugin.getHooks is not a function

安装下面的依赖&#xff0c;获得 html-webpack-plugin 的 beta 版本 npm i html-webpack-pluginnext --save此问题在github上有讨论&#xff1a;https://github.com/facebook/create-react-app/issues/5465

【UE5.1 角色练习】09-物体抬升、抛出技能 - part1

前言 在上一篇&#xff08;【UE5.1 角色练习】08-传送技能&#xff09;的基础上继续实现控制物体抬升、抛出的功能。 效果 步骤 一、准备技能动画 1. 在项目设置中新建一个操作映射&#xff0c;这里命名为“Skill_GravityControl”&#xff0c;用按键4触发 2. 通过IK重定向…

PyTorch学习(10):torch.where

PyTorch学习&#xff08;1&#xff09;&#xff1a;torch.meshgrid的使用-CSDN博客 PyTorch学习&#xff08;2&#xff09;&#xff1a;torch.device-CSDN博客 PyTorch学习&#xff08;9&#xff09;&#xff1a;torch.topk-CSDN博客 目录 1. 写在前面 2. torch.where 函数概…

【算法设计与分析】基于Go语言实现贪心法解决TSP问题

一、前言 本文以上文动态规划法为基础按照相似的输入来完成编程。 二、代码思路 因为是贪心法&#xff0c;直接去找离目前正在遍历的点最近的点&#xff0c;因此输入了一个二维矩阵&#xff0c;咱们还需要设置一个一维数组来存/检验是否遍历过点&#xff0c;遍历过就不要再算了…

CentOS开启ftp并使用filezilla连接

1. 安装vsftpd sudo yum install vsftpd -y 2. 启动ftp服务 service vsftpd start 3. 加入开机启动 chkconfig vsftpd on 4. 开启端口 sudo firewall-cmd --zonepublic --add-port21/tcp --permanent 5. 重启防火墙 sudo firewall-cmd --reload 6. 查询有哪些端口是开…

git远程仓库限额的解决方法——大文件瘦身

Git作为世界上最优秀的分布式版本控制工具&#xff0c;也是优秀的文件管理工具&#xff0c;它赋予了项目成员对项目进行远程协同开发能力&#xff0c;因此受到越来越多的行业从业人员的喜爱。很多优秀的项目管理平台&#xff0c;比如国内的Gitee&#xff0c;国外的Github&#…

MySQL 一条SQL查询/更新语句是如何执行的?

MySQL 一条SQL查询语句是如何执行的&#xff1f; 1 连接器 首先客户端需要先跟服务端进行连接 2 查询缓存 MySQL 5.7 以及之前的版本会查询MySQL缓存&#xff0c;存储是键值对形式的 分析器 对SQL进行词法分析【会生成词法树】以及语法分析 词法分析&#xff1a; 主要负…

华为OD刷题C卷 - 每日刷题 4

1、&#xff08;罗马数字转整数&#xff09;&#xff1a; 这段代码是解决“罗马数字转整数”的问题。它提供了一个Java类Solution&#xff0c;其中包含一个方法romanToInt&#xff0c;该方法接收一个表示罗马数字的字符串s&#xff0c;并将其转换为整数。 代码中首先定义了一…