leetcode: 258. Add Digits
来源:互联网 发布:国外数据库有哪些 编辑:程序博客网 时间:2024/05/29 11:36
题目解析:
题目链接:https://leetcode.com/problems/add-digits/description/
Given a non-negative integer num
, repeatedly add all its digits until the result has only one digit.
给定一个非负整数num,重复相加所有位数的值直到结果只有一位。
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?
刚开始思路很常规,就是要不断取出整数位然后相加,一个多位数字num,num-num/10可以得到最后一位数值。代码如下:
class Solution {public: int addDigits(int num) { int res = 0; while(num >= 10) { int q = num / 10; res+=(num-q*10); num = num / 10; } res += num; if(res >= 10) { return addDigits(res);//在vs里这里不用加return就可以,原因暂时未知,单步调试是会递归出来return res. } else return res; }};
http://www.cnblogs.com/grandyang/p/4741028.html
那么我们先来观察1到20的所有的树根:
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个一循环,所有大于9的数的树根都是对9取余,那么对于等于9的数对9取余就是0了,为了得到其本身,而且同样也要对大于9的数适用,我们就用(n-1)%9+1这个表达式来包括所有的情况,所以解法如下:
解法二:
class Solution {public: int addDigits(int num) { return (num - 1) % 9 + 1; }};
- 【LeetCode】258.Add Digits
- LeetCode 258. Add Digits
- LeetCode : 258. Add Digits
- leetCode 258. Add Digits
- LeetCode 258. Add Digits
- 258. Add Digits LeetCode
- LeetCode 258. Add Digits
- LeetCode 258. Add Digits
- leetcode 258. Add Digits
- [LeetCode]258. Add Digits
- LeetCode 258. Add Digits
- <LeetCode>258. Add Digits
- leetcode--258. Add Digits
- LeetCode 258. Add Digits
- LeetCode *** 258. Add Digits
- Leetcode 258. Add Digits
- 258.[LeetCode]Add Digits
- 【leetcode】258. Add Digits
- 适合程序员的写作技法
- 程序员的 “坏” 习惯:试一试
- elasticsearch-2.1.0集群搭建 及其出现的一些问题
- java反射和动态代理详解
- 自媒体百家号指数低怎么办,其实提高指数很容易
- leetcode: 258. Add Digits
- C++虚拟继承
- 【牛客网】直通bat-面试算法精品课_第2章 排序 2.10 计数排序练习题(JAVA版)
- openwrt15.05使用mt7620官方wifi驱动及apcli
- jupypter notebook running collapse, displayed kernel died,restarted, however, it didn;t work
- java使用POI操作excel文件,实现批量导出,和导入
- 【Halcon】vs2010与Halcon10.0的配置
- Hadoop分布式集群搭建
- (四) particle云架构代码结构