【LeetCode每日一题】——575.分糖果

文章目录

  • 一【题目类别】
  • 二【题目难度】
  • 三【题目编号】
  • 四【题目描述】
  • 五【题目示例】
  • 六【题目提示】
  • 七【解题思路】
  • 八【时间频度】
  • 九【代码实现】
  • 十【提交结果】

一【题目类别】

  • 哈希表

二【题目难度】

  • 简单

三【题目编号】

  • 575.分糖果

四【题目描述】

  • 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 = = c a n d y T y p e . l e n g t h n == candyType.length n==candyType.length
  • 2 < = n < = 1 0 4 2 <= n <= 10^4 2<=n<=104
  • n 是一个偶数 n 是一个偶数 n是一个偶数
  • − 1 0 5 < = c a n d y T y p e [ i ] < = 1 0 5 -10^5 <= candyType[i] <= 10^5 105<=candyType[i]<=105

七【解题思路】

  • 因为糖果的个数总共为 n n n个,所以根据题意,最后返回的结果不会超过 n 2 \frac{n}{2} 2n
  • 此外,设这些糖果一共有 m m m种,所以说返回的结果也不会超过 m m m
  • 如果 m ≤ n 2 m \leq \frac{n}{2} m2n,那么说明可以吃到重复的糖果,但是最多吃到 m m m种糖果,返回的结果就是 m m m
  • 如果 m ≥ n 2 m \geq \frac{n}{2} m2n,那么说明就算有再多的糖果种类,也只能吃到 n 2 \frac{n}{2} 2n颗糖果
  • 综上所述,最后返回的结果为: m i n ( m , n 2 ) min(m, \frac{n}{2}) min(m,2n)
  • 实现以上思路使用哈希表即可,比较简单,具体内容可参见下面的代码
  • 最后返回结果即可

八【时间频度】

  • 时间复杂度: O ( n ) O(n) O(n) n n n为传入的数组的长度
  • 空间复杂度: O ( n ) O(n) O(n) n n n为传入的数组的长度

九【代码实现】

  1. Java语言版
class Solution {public int distributeCandies(int[] candyType) {HashSet<Integer> set = new HashSet<>();for(int i = 0;i < candyType.length;i++){set.add(candyType[i]);}return Math.min(set.size(), candyType.length / 2);}
}
  1. C语言版
int distributeCandies(int* candyType, int candyTypeSize)
{int* map = (int*)calloc(200001, sizeof(int));for(int i = 0;i < candyTypeSize;i++){map[candyType[i] + 100000]++;}int count = 0;for(int i = 0;i < 200001;i++){if(map[i] > 0){count++;}}return fmin(count, candyTypeSize / 2);
}
  1. Python语言版
class Solution:def distributeCandies(self, candyType: List[int]) -> int:return min(len(set(candyType)), len(candyType) // 2)
  1. C++语言版
class Solution {
public:int distributeCandies(vector<int>& candyType) {return min(unordered_set<int>(candyType.begin(), candyType.end()).size(), candyType.size() / 2);}
};

十【提交结果】

  1. Java语言版
    在这里插入图片描述

  2. C语言版
    在这里插入图片描述

  3. Python语言版
    在这里插入图片描述

  4. C++语言版
    在这里插入图片描述

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

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

相关文章

WLRYJ-300型微流控芯片真空热压机

WLRYJ-300型微流控芯片真空热压机 关键词&#xff1a;微流控芯片&#xff0c;热压封合&#xff0c;LNP合成芯片 WLRYJ-300型微流控芯片真空热压机是一款应用于PMMA、PC、PP、COP、COC、BOPET、CBC、树脂&#xff08;部分&#xff09;、聚乙烯&#xff08;部分&#xff09;等硬质…

el-table那些事

el-table那些事 1、获取el-table所有勾选的行数据2、el-table自定义列标题3、el-table列可编辑&#xff0c;加入el-input等 用于记录工作和日常学习遇到的坑&#xff0c;需求。 vue3element-plusts 1、获取el-table所有勾选的行数据 1、需要先声明一个ref变量&#xff0c;并赋…

01 - 工作区、暂存区、版本库、远程仓库 - 以一次连贯的提交操作为例

1. 工作区、暂存区、版本库、远程仓库 以一次连贯的提交操作为例。 1.1 工作区 Git的工作区也就是我们平时编辑代码的目录文件夹。 新建一个kongfu_person.txt文件&#xff0c;工作区的变化&#xff1a; 1.2 工作区 > 暂存区&#xff1a;git add 1.3 暂存区 > 版本库…

LNMP应用

目前成熟的企业网站应用模式之一&#xff0c;指的是一套协调工作的系统和相关软件 能够提供静态页面的服务&#xff0c;也可以提供动态Web服务 LNMP LNMP介绍 L &#xff1a;Linux系统 &#xff0c;操作系统 N&#xff1a;Ngin提供网站服务&#xff0c;前端&#xff0c;提…

leetcode经典算法——快速幂

实现 pow(x, n) &#xff0c;即计算 x 的整数 n 次幂函数&#xff08;即&#xff0c;xn &#xff09;。 暴力方法肯定是循环循环n次&#xff0c; 每一次*x 显然此方法遇到大的数字会超时 那么我们要引进一个思想&#xff0c;快速幂算法 例如&#xff1a; x^97 我们可以看出&a…

小程序的api使用 以及一些weui组件实列获取头像 扫码等

今日目标 响应式单位rpx小程序的生命周期 【重点】20%小程序框架 weui 【重点】 50%内置API 【重点】30%综合练习 1. 响应式rpx 1.1 rpx单位 rpx是微信小程序提出的一个尺寸单位&#xff0c;将整个手机屏幕宽度分为750份&#xff0c;1rpx 就是 1/750&#xff0c;避免不同手…

vmwera中安装的centos8出现ifconfig不可用

刚刚在虚拟机中装好centos结果发现自己的ifconfig命令不可用。 看一下环境变量里有没有ifconfig命令的路径&#xff0c;因为ifconfig是在/sbin路径下的&#xff0c;root用户登录进去才可以运行&#xff0c;先看一下root用户的环境变量。 root用户的环境变量里是有/sbin路径的&a…

CI/CD—K8S 基本理解与部署

1 K8S 是什么 Kubernetes 是一款容器的编排调度工具&#xff0c;来源于 Google 开源的 Brog 系统。Kubernetes简称K8S&#xff0c;是用8代替8个字符 “ubernete” 而成的缩写&#xff0c;用于管理云平台中多个主机上的容器化的应用&#xff0c;Kubernetes 的目标是让部署容器化…

springboot工程集成前端编译包,用于uni-app webView工程,解决其需独立部署带来的麻烦,场景如页面->画布->图片->pdf

前端工程 访问方式 http://127.0.0.1:8080/context/frontEnd/index放行 public class SecurityConfig extends WebSecurityConfigurerAdapter { "/frontEnd/**",SysFrontEndController import lombok.extern.slf4j.Slf4j; import nl.basjes.shaded.org.springfram…

超导热催生meme,换汤不换药的投机轮回

文/章鱼哥 出品/陀螺财经 币圈对炒作meme概念的热情从未消亡过。 随着一种名为LK-99的物质被发现&#xff0c;围绕超导的兴奋不仅激发了科学界&#xff0c;加密货币相关概念也与之沸腾。不出所料&#xff0c;与此前围绕元宇宙、AI大肆炒作一样&#xff0c;许多meme代币已经出现…

实时通信应用的开发:Vue.js、Spring Boot 和 WebSocket 整合实践

目录 1. 什么是webSocket 2. webSocket可以用来做什么? 3. webSocket协议 4. 服务器端 5. 客户端 6. 测试通讯 1. 什么是webSocket WebSocket是一种在单个TCP连接上进行全双工通信的协议。WebSocket使得客户端和服务器之间的数据交换变得更加简单&#xff0c;允许服务…

C语言假期作业 DAY 13

一、选择题 1、如果 x2014 &#xff0c;下面函数的返回值是&#xff08; &#xff09; int fun(unsigned int x) { int n 0; while(x 1) { n; x x | (x 1); } return n; } A: 20 B: 21 C: 23 D 25 答案解析 正确答案&#xff1a;C 这个作用是对整型中0的个数进行统计&…