【LeetCode解题报告】Add Digits
来源:互联网 发布:python 流对象如何传输 编辑:程序博客网 时间:2024/05/21 08:40
Given a non-negative integer num
, repeatedly add all its digits until the result has only one digit.
For example:
Given num = 38
, the process is like: 3 + 8 = 11
, 1 + 1 = 2
. Since 2
has only one digit, return it.
Follow up:
Could you do it without any loop/recursion in O(1) runtime?
Hint:
https://en.wikipedia.org/wiki/Digital_root
从维基百科中得出结论:(num-i)%9 == 0 满足此条件的i就是num的数字根(digital root)
我们可以举几个例子简单验证一下:
首先无论是多少位的数,都会变成两位数或者一位数的形式,且最终一定会变成一位数的形式:
10=9+1, 11=9+2, 12=9+3, 13=9+4, 14=9+5, 15=9+6, 16=9+7, 17=9+8, 18=9+9, 19=9+9+1=2*9+1, ……, num=k*9+i
所以,思路就变得非常简单:
①如果输入的数字小于10,则直接返回,这个数本身就是自己的树根
②如果输入的数字大于等于10:若它能不能被9整除,则返回其除以9的余数;否则返回9
程序如下:
class Solution {public: int addDigits(int num) { if (num < 10) { return num; } return (num%9!=0 ? num%9 : 9); }};
0 0
- LeetCode-Add Digits-解题报告
- 【LeetCode解题报告】Add Digits
- 【LeetCode】 Add Digits 解题报告
- [leetcode] 258. Add Digits 解题报告
- LeetCode 258.Add Digits 解题报告
- leetcode解题报告258. Add Digits
- [Leetcode] 258. Add Digits 解题报告
- leetcode解题报告258——Add Digits
- LeetCode --- Add Digits解题分析
- LeetCode-Add Binary-解题报告
- [LeetCode] Add Binary 解题报告
- 【LeetCode】Add Strings 解题报告
- 【LeetCode】Add Binary 解题报告
- [leetcode] 402. Remove K Digits 解题报告
- [Leetcode] 402. Remove K Digits 解题报告
- 【LeetCode】Add Two Numbers 解题报告
- LeetCode-Add Two Numbers-解题报告
- Add Binary | leetcode 67 【Java解题报告】
- 范例讲解:多对多的关系
- py类隐藏数据
- 模板类的定义和实现
- C语言关键字register
- 安卓调用unity的3D界面
- 【LeetCode解题报告】Add Digits
- 野指针
- 【链表项目3-单链表应用】
- 强连通图之HDU1269 迷宫城堡
- 的规范化和分和大发光火健康和高口更何况
- 韩信点兵--中国剩余定理
- linux 切图命令
- 软件项目开发论述
- PHP知识点-1