LeetCode每日一题4.23

news2025/4/27 20:32:57

题目

在这里插入图片描述

问题分析

计算每个数字的数位和:对于从 1 到 n 的每个整数,计算其十进制表示下的数位和。
分组:将数位和相等的数字放到同一个组中。
统计每个组的数字数目:统计每个组中有多少个数字。
找到并列最多的组:返回数字数目并列最多的组有多少个。

思路

计算数位和:
对于每个数字,将其转换为字符串,然后将每个字符(数字)转换为整数并求和。
分组:
使用一个字典来存储数位和作为键,对应的数字列表作为值。
统计每个组的数字数目:
遍历字典,统计每个键(数位和)对应的值(数字列表)的长度。
找到并列最多的组:
找到最大的组长度,然后统计有多少个组的长度等于这个最大长度。

代码

class Solution:
    def countLargestGroup(self, n: int) -> int:
        # Step 1: Calculate the digit sum for each number from 1 to n
        def digit_sum(x):
            return sum(int(digit) for digit in str(x))

        # Step 2: Group numbers by their digit sum
        groups = defaultdict(list)
        for i in range(1, n + 1):
            ds = digit_sum(i)
            groups[ds].append(i)

        # Step 3: Count the size of each group
        group_sizes = [len(group) for group in groups.values()]

        # Step 4: Find the largest group size and count how many groups have this size
        max_size = max(group_sizes, default=0)
        count_max_size = group_sizes.count(max_size)

        return count_max_size

复杂度分析

时间复杂度:(O(nlogn))
空间复杂度:(O(n))

学习

问题理解:
通过示例来进一步理解:
示例 1:( n = 13 )
数字 1 到 13 的数位和分别为:[1, 2, 3, 4, 5, 6, 7, 8, 9, 1(1+0), 2(1+1), 3(1+2), 4(1+3)],即 [1, 2, 3, 4, 5, 6, 7, 8, 9, 1, 2, 3, 4]。
根据数位和分组得到:[ [1, 10], [2, 11], [3, 12], [4, 13], [5], [6], [7], [8], [9] ]。
每个组的大小为:[2, 2, 2, 2, 1, 1, 1, 1, 1]。
最大的组大小为 2,有 4 个组的大小为 2,因此答案为 4。

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

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

相关文章

RunnerGo API性能测试实战与高并发调优

API 性能测试通过模拟不同负载场景,量化评估 API 的响应时间、吞吐量、稳定性、可扩展性等性能指标,关注其在正常、高峰甚至极限负载下的表现。这有助于确保 API 稳定高效地运行,为调用者提供优质服务。 接下来,我们借助 RunnerG…

STM32——相关软件安装

本文是根据江协科技提供的教学视频所写,旨在便于日后复习,同时供学习嵌入式的朋友们参考,文中涉及到的所有资料也均来源于江协科技(资料下载)。 Keil5 MDK安装 1.安装Keil5 MDK2.安装器件支持包方法一:离线…

数据结构入门【算法复杂度】超详解深度解析

🌟 复杂度分析的底层逻辑 复杂度是算法的"DNA",它揭示了两个核心问题: 数据规模(n)增长时,资源消耗如何变化? 不同算法在极端情况下的性能差异有多大? 数学本质解析 复杂度函数 T(n)O(f(n))…

java多线程(7.0)

目录 ​编辑 定时器 定时器的使用 三.定时器的实现 MyTimer 3.1 分析思路 1. 创建执行任务的类。 2. 管理任务 3. 执行任务 3.2 线程安全问题 定时器 定时器是软件开发中的一个重要组件. 类似于一个 "闹钟". 达到一个设定的时间之后, 就执行某个指定好的…

Long类型封装Json传输时精度丢失问题

在信息做传输时,经常会使用到类型转换,这个时候因为一些问题会导致精度的丢失。在支付业务中这种问题更为致命。 这里我主动生成一个支付订单并将相关信息使用base64编码为一个二维码返回给前端进行支付,前端进行支付时我通过回调方法发现回调…

《从GPT崛起,看AI重塑世界》

《从GPT崛起,看AI重塑世界》 GPT 诞生:AI 领域的震撼弹 2022 年 11 月 30 日,OpenAI 发布了一款名为 ChatGPT 的人工智能聊天机器人程序,宛如一颗重磅炸弹投入了平静的湖面,迅速在全球范围内引发了轩然大波,成为了科技领域乃至大众舆论场中最热门的话题之一。一时间,无…

系统架构-安全架构设计

概述 对于信息系统来说,威胁有:物理环境(最基础)、通信链路、网络系统、操作系统、应用系统、管理系统 物理安全:系统所用设备的威胁,如自然灾害、电源故障通信链路安全:在传输线路上安装窃听…

鼠标指定范围内随机点击

鼠标指定范围内随机点击 点赞神器 将鼠标移动到相应位置后按F5 F6键,设置点击范围, F8开始,ESC中止。 有些直播有点赞限制,例如某音,每小时限制3千次,可以设置1200毫秒,3000次。 软件截图&#…

HashSet 概述

1. HashSet 概述 HashSet 是 Java 集合框架中 Set 接口的一个实现类,它存储唯一元素,即集合中不会有重复的元素。HashSet 基于哈希表(实际上是 HashMap 实例)来实现,不保证元素的顺序,并且允许存储 null 元…

遥测终端机,推动灌区流量监测向数据驱动跃迁

灌区范围那么大,每一滴水怎么流都关系到粮食够不够吃,还有生态能不能平衡。过去靠人工巡查、测量,就像拿着算盘想算明白大数据,根本满足不了现在水利管理的高要求。遥测终端机一出现,就像给灌区流量监测安上了智能感知…

蓝耘平台介绍:算力赋能AI创新的智算云平台

一、蓝耘平台是什么 蓝耘智算云(LY Cloud)是蓝耘科技打造的现代化GPU算力云服务平台,深度整合自研DS满血版大模型技术与分布式算力调度能力,形成"模型算力"双轮驱动的技术生态。平台核心优势如下: 平台定位…

QtDesigner中Button控件详解

一:Button控件 关于Button控件的主要作用就是作为触发开关,通过点击事件(click)执行代码逻辑,或者作为功能入口,跳转到其他界面或模块。 二:常见属性与配置 ①Button的enabled,大…

Flink 源码编译

打包命令 打包整个项目 mvn clean package -DskipTests -Drat.skiptrue打包单个模块 mvn clean package -DskipTests -Drat.skiptrue -pl flink-dist如果该模块依赖其他模块,可能需要先将其他模块 install 到本地,如果依赖的模块的源代码有修改&#…

docker的安装和简单使用(ubuntu环境)

环境准备 这里用的是linux的环境,如果没有云服务器的话,就是用虚拟环境吧。 虚拟环境的安装参考:vmware17的安装 linux镜像的安装 docker安装 我使用的是ubuntu,使用以下命令: 更新本地软件包索引 sudo apt u…

EasyRTC音视频实时通话在线教育解决方案:打造沉浸式互动教学新体验

一、方案概述 EasyRTC是一款基于WebRTC技术的实时音视频通信平台,为在线教育行业提供了高效、稳定、低延迟的互动教学解决方案。本方案将EasyRTC技术深度整合到在线教育场景中,实现师生间的实时音视频互动等核心功能,打造沉浸式的远程学习体…

【分布式系统中的“瑞士军刀”_ Zookeeper】一、Zookeeper 快速入门和核心概念

在分布式系统的复杂世界里,协调与同步是确保系统稳定运行的关键所在。Zookeeper 作为分布式协调服务的 “瑞士军刀”,为众多分布式项目提供了高效、可靠的协调解决方案。无论是在分布式锁的实现、配置管理,还是在服务注册与发现等场景中&…

Electron从入门到入门

项目说明 项目地址 项目地址:https://gitee.com/ruirui-study/electron-demo 本项目为示例项目,代码注释非常清晰,给大家当做入门项目吧。 其实很多东西都可以在我这基础上添加或修改、市面上有些已开源的项目,但是太臃肿了&am…

优化提示词方面可以使用的数学方法理论:信息熵,概率论 ,最优化理论

优化提示词方面可以使用的数学方法理论:信息熵,概率论 ,最优化理论 目录 优化提示词方面可以使用的数学方法理论:信息熵,概率论 ,最优化理论信息论信息熵明确问题主题提供具体细节限定回答方向规范语言表达概率论最优化理论信息论 原理:信息论中的熵可以衡量信息的不确定性。…

腾讯一面面经:总结一下

1. Java 中的 和 equals 有什么区别?比较对象时使用哪一个 1. 操作符: 用于比较对象的内存地址(引用是否相同)。 对于基本数据类型、 比较的是值。(8种基本数据类型)对于引用数据类型、 比较的是两个引…

Golang | 倒排索引

文章目录 倒排索引的设计倒排索引v0版实现 倒排索引的设计 通用搜索引擎 v.s. 垂直搜索引擎: 通用搜索引擎:什么都可以搜索,更加智能化垂直搜索引擎:只能搜自家数据库里面的内容,一般都带着搜索条件,搜索一…