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

LeetCode每日一题4.23

题目

在这里插入图片描述

问题分析

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

思路

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

代码

class Solution:def countLargestGroup(self, n: int) -> int:# Step 1: Calculate the digit sum for each number from 1 to ndef digit_sum(x):return sum(int(digit) for digit in str(x))# Step 2: Group numbers by their digit sumgroups = defaultdict(list)for i in range(1, n + 1):ds = digit_sum(i)groups[ds].append(i)# Step 3: Count the size of each groupgroup_sizes = [len(group) for group in groups.values()]# Step 4: Find the largest group size and count how many groups have this sizemax_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.xdnf.cn/news/104617.html

相关文章:

  • Codeforces Round 1019 (Div. 2)(ABCD)
  • 【线段树】P1438 无聊的数列|普及+
  • Java Arrays工具类解析(Java 8-17)
  • Spark集群搭建之Yarn模式
  • 将十六进制字符串转换为二进制字符串的方法(Python,C++)
  • Linux内核编译全流程详解与实战指南
  • 汇编语言与二进制分析:从入门到精通的学习路径与实践指南
  • 对流对象的理解
  • 电商行业下的Java核心、Spring生态与AI技术问答
  • MsQuick编译和使用
  • postman 删除注销账号
  • 一种免费的离线ocr-汉字识别率100%
  • 【每日八股】复习 Redis Day2:Redis 的持久化(下)
  • 基于深度学习的信号滤波:创新技术与应用挑战
  • 1.1 java开发的准备工作
  • Hadoop 集群扩容新增节点操作文档
  • DasViewer软件视图设置
  • leetcode-位运算
  • 人工智能华迪杯比赛项目推荐
  • 二进制部署Kubernetes1.32.4最新版本高可用集群及附加组件
  • Postman忘记密码访问官网总是无响应
  • 三轴云台之平衡系统篇
  • 【动态规划】树形dp
  • 【网络入侵检测】Suricata之入侵防御(IPS)模式
  • RedisTemplate序列化器
  • 物体识别(1)
  • 【Maven】特殊pom.xml配置文件 - BOM
  • vue2+Vant 定制主题
  • 拆解大模型“越狱”攻击:对抗样本如何撕开AI安全护栏?
  • 数据结构(四)-双向链表