【Leetcode算题记录】1742盒子中小球的最大数量&&3160所有球里面不同颜色的数目 模拟+哈希表

1742. 盒子中小球的最大数量

你在一家生产小球的玩具厂工作,有 n 个小球,编号从 lowLimit 开始,到 highLimit 结束(包括 lowLimit 和 highLimit ,即 n == highLimit - lowLimit + 1)。另有无限数量的盒子,编号从 1 到 infinity 。你的工作是将每个小球放入盒子中,其中盒子的编号应当等于小球编号上每位数字的和。例如,编号 321 的小球应当放入编号 3 + 2 + 1 = 6 的盒子,而编号 10 的小球应当放入编号 1 + 0 = 1 的盒子。

给你两个整数 lowLimit 和 highLimit ,返回放有最多小球的盒子中的小球数量*。*如果有多个盒子都满足放有最多小球,只需返回其中任一盒子的小球数量。

提示:

1 <= lowLimit <= highLimit <= 10^5

题目要求将编号为lowLimithighLimit的小球放入盒子中,放入规则是将编号为idx的小球的每一位相加得到要放入的盒子的编号。那么直接遍历[lowLimit,highLimit],将每个编号的小球放入对应的盒子中,统计每个盒子中球的数量,返回数量最多的盒子中球的数量即可。
这个思路让很难让人不想起哈希表这个数据结构,每一个盒子有编号,有个数,这不就是哈希表吗?题目要求返回最多的小球数量,只要在更新了哈希表后,和当前的盒子中球的数量比较一下,取最大值即可。
由于小球的编号范围为 [1, 10^5],因此数位之和为:[1, 45]。可以用一个长度为 46 的数组来表示每个小盒的球数目。

int countBalls(int lowLimit, int highLimit) {
   
    int ans=0;
    vector<int> hash(46
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值