258 Add Digits
2016-02-02 14:24
344 查看
Given a non-negative integer
one digit.
For example:
Given
only one digit, return it.
https://en.wikipedia.org/wiki/Digital_root
Solution1 Straightforward way
public class Solution {
public int addDigits(int num) {
while(num>=10){
num = (num/10)+num%10;
}
return num;
}
}简单的问题总是会有简单的方法,如果你没有找到,也只是说明你没有找到而已。一个数的数字根(digit root)就是将该数的所有数字加起来,循环往复,直到只有一位数字为止。譬如 345, 3+4+5=12,1+2=3,那么 345 的数字根就是 3。代码可以如此简单,只要你发现了 root(10x+y) = root(x+y) 实际上 root(x) = x % 9 这个真相就好了。 也就是一个数 n 的数字根就是 n % 9 !不过因为数 n 除了 0 时数字根是 0 之外,其他时候是取值
1 - 9,所以 n % 9 如果为 0 的时候数字根是 9 !用一个小技巧处理便是: (n-1) % 9 + 1 !
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
2has
only one digit, return it.
https://en.wikipedia.org/wiki/Digital_root
Solution1 Straightforward way
public class Solution {
public int addDigits(int num) {
while(num>=10){
num = (num/10)+num%10;
}
return num;
}
}简单的问题总是会有简单的方法,如果你没有找到,也只是说明你没有找到而已。一个数的数字根(digit root)就是将该数的所有数字加起来,循环往复,直到只有一位数字为止。譬如 345, 3+4+5=12,1+2=3,那么 345 的数字根就是 3。代码可以如此简单,只要你发现了 root(10x+y) = root(x+y) 实际上 root(x) = x % 9 这个真相就好了。 也就是一个数 n 的数字根就是 n % 9 !不过因为数 n 除了 0 时数字根是 0 之外,其他时候是取值
1 - 9,所以 n % 9 如果为 0 的时候数字根是 9 !用一个小技巧处理便是: (n-1) % 9 + 1 !
int addDigits(int num) { return (num-1)%9+1; }
相关文章推荐
- Linux Shell常用技巧(六) sort uniq tar split
- redis(java)
- WC2016 挑战NPC
- uva1267 - Network
- 在listView适配器的内存优化给点击事件带来的麻烦
- [树状数组+上升子序列] HDU 3030 Increasing Speed Limits
- 【SCOI2013】【BZOJ3323】多项式的运算
- 四面体体积求法
- 视频播放的基本原理
- Linux Shell常用技巧(五) awk编程
- windows下用Eclipse编译运行android原生浏览器
- Android官方数据绑定框架DataBinding
- Rx-Volley 自己来封装
- mybatis 生成dao、entity、mapping文件
- Windows + IDEA + SBT 打造Spark源码阅读环境
- 工作中一定用的到的小知识点
- HashMap
- Linux Shell常用技巧(四) awk
- 谈谈visual studio QTCreator eclipse的远程调试
- Qt(12):画笔,画刷,反走样以及渐变