LintCode之Add Digits
来源:互联网 发布:电脑软件出现乱码 编辑:程序博客网 时间:2024/06/05 15:08
lintCode之Add Digits
题目描述
Given a non-negative integer num, repeatedly add all its digits until the result has only one digit.
样例
Given num = 38. The process is like: 3 + 8 = 11, 1 + 1 = 2. Since 2 has only one digit, return 2.
思路分析
我的理解这道题主要是把大于10的数个位和十位数进行求和,得到的结果如果大于10,再进行同样的求和,题目的理解不难,对于如何求解请看下面的代码展示
public class Solution { /** * @param num a non-negative integer * @return one digit */ public int addDigits(int num) { while(num/10>0){//判断是否符合题目要求 int sum = 0; while(num>0){ sum += num%10;//num%10得到个位数 num /= 10; } num = sum; } return num; }}
对于更简单的方法可以分析一下各个数的特点
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
.
.
.
可以看出来,9个数为一个循环,初步可以得出结果为 num%9。但是发现num为9的话结果就为0,所以可以改成(num-1)%9+1
所以代码也可以写成
public class Solution { /** * @param num a non-negative integer * @return one digit */ public int addDigits(int num) { return (num-1)%9+1; }}
参考文章
0 0
- LintCode之Add Digits
- LintCode | 569. Add Digits
- leetcode之Add Digits
- LeetCode 之 Add Digits
- LeetCode之Add Digits
- leetcode 之 add digits
- leetcode之Add Digits
- Add Digits
- Add Digits
- Add Digits
- Add Digits
- Add Digits
- Add Digits
- Add Digits
- Add Digits
- Add Digits
- Add Digits
- Add Digits
- Intellij IDEA 自动生成 serialVersionUID
- hibernate注解
- 原创
- simple-spa 一个简单的单页应用实例
- 数据结构----串
- LintCode之Add Digits
- Eclipse使用及错误提示
- 各种的监听
- 华为OJ——第一个只出现一次的字符
- 除了努力,运气也很重要
- POJ 1488 TEX Quotes 更换双引号
- Android studio 默认快捷键
- AIDL
- 申请调剂