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

LeetCode刷题笔记

LeetCode刷题笔记

10.24题目

258各位相加

题目描述:

给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。返回这个结果。

示例 1:

输入: num = 38
输出: 2 
解释: 各位相加的过程为:
38 --> 3 + 8 --> 11
11 --> 1 + 1 --> 2
由于 2 是一位数,所以返回 2。

示例 2:

输入: num = 0
输出: 0

提示:

  • 0 <= num <= 231 - 1

①使用循环:

方法一:通过转化整型为字符串,再转换回来,来进行运算

class Solution {
public:int addDigits(int num) {int a = num;while(a>=10){int sum = 0;string b = to_string(a);for(int i = 0;i<b.size();i++){sum += (b[i] - '0');}a = sum;}return a;}
};

方法二:通过取模,得到数字再相加

class Solution {
public:int addDigits(int num) {while(num >= 10) {int sum = 0;while(num > 0) {sum += num % 10;num /= 10;}num = sum;}return num;}
};

②不使用循环,通过找到数学规律来得到结果

class Solution {
public:int addDigits(int num) {return 1 + (num - 1) % 9;}
};

为什么这样写?

以数字 abc为例:

abc = 100a + 10b + c
各位和 = a + b + c
差值 = (100a + 10b + c) - (a + b + c)= 99a + 9b= 9 × (11a + b)  ← 这是9的倍数

因此可以直接取mod 9,不过9本身就会变成0,要保留9本身,所以通过(num-1)保证9不被模掉,又通过+1恢复它本身。

http://www.hskmm.com/?act=detail&tid=38393

相关文章:

  • [NOIP2023] 双序列拓展 题解
  • 洛谷 P9530 Fish 2
  • 洛谷 P7011 Escape
  • 你可以把它喂给AI让AI猜猜我在干什么
  • 【深入浅出Nodejs】异步非阻塞IO
  • 135. 分发糖果
  • 【Java-JMM】Happens-before原则
  • P6072 『MdOI R1』Path
  • P1601题解
  • 10-23 好题选讲总结
  • 关于驻马店市 2025 中小学信息学竞赛的记录(入门级)(未完)
  • 关于Markdown的使用
  • 自定义Spring Cloud LoadBalancer实践
  • 游记——驻马店市2025中小学信息学竞赛(未完)
  • 线段树上二分
  • ABP - SqlSugar [SqlSugarModule、ISqlSugarClient、SqlSugarRepository]
  • Odoo18.0 对接 京东快递
  • SAP折旧模拟超过1000条资产dump问题及解决
  • [python] 代码性能分析工具line_profiler使用指北
  • react的diff算法
  • LLM学习记录DAY11
  • ABP - 当前用户 [ICurrentUser、CurrentUser]
  • 轮次检测模型 VoTurn-80M 开源,多模态融合架构;OpenAI 收购桌面助手 Sky:实时识别屏幕自然语言交互丨日报
  • 第4天(中等题 滑动窗口、哈希表)
  • 幂函数
  • ABP - 依赖注入和属性注入
  • SAP维护汇率的关键Tcode
  • ABP vNext 框架功能模块 - 动态API(Dynamic API)
  • ABP vNext 框架功能模块 - 模块化(Modularity)
  • Devolutions Server权限提升漏洞分析与修复指南