当前位置: 首页 > article >正文

算法-盒子中小球的最大数量

原题目链接:1742. 盒子中小球的最大数量 - 力扣(LeetCode)

你在一家生产小球的玩具厂工作,有 n 个小球,编号从 lowLimit 开始,到 highLimit 结束(包括 lowLimit 和 highLimit ,即 n == highLimit - lowLimit + 1)。另有无限数量的盒子,编号从 1 到 infinity 。

你的工作是将每个小球放入盒子中,其中盒子的编号应当等于小球编号上每位数字的和。例如,编号 321 的小球应当放入编号 3 + 2 + 1 = 6 的盒子,而编号 10 的小球应当放入编号 1 + 0 = 1 的盒子。

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

示例 1:

输入:lowLimit = 1, highLimit = 10
输出:2
解释:
盒子编号:1 2 3 4 5 6 7 8 9 10 11 ...
小球数量:2 1 1 1 1 1 1 1 1 0  0  ...
编号 1 的盒子放有最多小球,小球数量为 2 。

示例 2:

输入:lowLimit = 5, highLimit = 15
输出:2
解释:
盒子编号:1 2 3 4 5 6 7 8 9 10 11 ...
小球数量:1 1 1 1 2 2 1 1 1 0  0  ...
编号 5 和 6 的盒子放有最多小球,每个盒子中的小球数量都是 2 。

示例 3:

输入:lowLimit = 19, highLimit = 28
输出:2
解释:
盒子编号:1 2 3 4 5 6 7 8 9 10 11 12 ...
小球数量:0 1 1 1 1 1 1 1 1 2  0  0  ...
编号 10 的盒子放有最多小球,小球数量为 2 。

提示:

  • 1 <= lowLimit <= highLimit <= 10^5
    
    
    import java.util.ArrayList;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
    
    class Solution {
        //计算个位数之和
        public static int geweiSum(int n)
        {
            int sum =0;
            while(n>0)
            {
                sum=sum+n%10;
                n=n/10;
            }
            return sum;
        }
        //个位数之和相同最多的盒子
        public static int countBalls(int lowLimit, int highLimit) {
            // 创建一个HashMap来存储每个数字及其出现的次数
            Map<Integer, Integer> frequencyMap = new HashMap<>();
            List<Integer> numbers=new ArrayList<>();
            for(int i= lowLimit;i<=highLimit;i++)
            {
                numbers.add(geweiSum(i));
            }
    //        System.out.println(numbers);
            // 遍历列表,更新HashMap中的计数
            for (int number : numbers) {
                if (frequencyMap.containsKey(number)) {
                    frequencyMap.put(number, frequencyMap.get(number) + 1);
                } else {
                    frequencyMap.put(number, 1);
                }
            }
    //        System.out.println(frequencyMap);
            // 查找出现次数最多的数字
            int mostFrequentNumber = -1;
            int maxCount = 0;
            for (Map.Entry<Integer, Integer> entry : frequencyMap.entrySet()) {
                if (entry.getValue() > maxCount) {
                    maxCount = entry.getValue();
                    mostFrequentNumber = entry.getValue();
                }
            }
            return mostFrequentNumber;
        }
    
    //    public static void main(String[] args) {
    //        System.out.println(countBalls(1,10));
    //    }
    }


http://www.kler.cn/a/488447.html

相关文章:

  • EasyCVR视频汇聚平台如何配置webrtc播放地址?
  • OpenPCDet从环境配置到模型训练
  • 计算机网络之---局域网
  • docker搭建atlassian-confluence:7.2.0
  • 云计算基础,虚拟化原理
  • 新版2024AndroidStudio项目目录结构拆分
  • C16.【C++ Cont】string类字符串的关系运算和与string有关的函数
  • JavaScript系列(10)-- Map数据结构专题
  • 如何确保获取的淘宝详情页数据的准确性和时效性?
  • 基于Ubuntu2404脚本搭建openstackC版-ovn网络驱动
  • 设计模式 创建型 抽象工厂模式(Abstract Factory)与 常见技术框架应用 解析
  • Win32汇编学习笔记06.APIHook
  • 单片机 期末笔记
  • 《探秘鸿蒙NEXT中的人工智能核心架构》
  • 【2025 Rust学习 --- 11 实用工具特型01】
  • 车载音频开发(二):对音频数据作音量调节
  • Java 基于微信小程序的高校科研团队管理系统设计与实现(附源码,部署,文档
  • PHP RCE
  • JS爬虫实战演练
  • js观察者模式
  • nginx反向代理和负载均衡的区别
  • 【LeetCode】303. 区域和检索 - 数组不可变
  • linux 设置mysql 外网访问
  • 微信原生小程序自定义封装组件(以导航navbar为例)
  • 1.3作业
  • 机器学习的基本原理和算法