Add Digits
来源:互联网 发布:c语言 external 编辑:程序博客网 时间:2024/06/05 16:11
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?
public class Solution { public int addDigits(int num) { int temp = num; while(temp/10!=0){ temp = 0; while( num != 0){ int last = num % 10; temp += last; num = num/10; } num = temp; } return temp; }}
题目要求用 constant time解法:找数学规律,
1 1
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 1
11 2
12 3
13 4
14 5
15 6
16 7
17 8
18 9
19 1
20 2
就是以9为循环的一个结构,这也是沁源老师说的,可视化,分析问题的时候可视化,就可以发现规律。
注意:0为特殊case要处理,然后%9 == 0的时候,其实就是9.
public class Solution { public int addDigits(int num) { if(num == 0) return 0; if(num%9 == 0) { return 9; } else { return num%9; } }}
0 0
- Add Digits
- Add Digits
- Add Digits
- Add Digits
- Add Digits
- Add Digits
- Add Digits
- Add Digits
- Add Digits
- Add Digits
- Add Digits
- Add Digits
- Add Digits
- Add Digits
- Add Digits
- Add Digits
- Add Digits
- Add Digits
- JAVA-元数据
- Problem F
- 二叉排序树(或二叉查找树)的建立
- 减少Draw Call的方法
- 根据一个域名取其根域
- Add Digits
- javascript写99乘法表
- selenium 和 phantomJS或chrome浏览器抓取渲染网页
- js报错总结
- [Unity3D]图形渲染优化、渲染管线优化、图形性能优化
- 判断是否连接网络以及是否是局域网
- 仿QQ侧滑删除Item效果Demo
- ubuntu桥接本机win7
- ES6: babel配置与babel-clic安装