数字和的运算算法剖析
来源:互联网 发布:linux 递归授权 编辑:程序博客网 时间:2024/05/22 05:23
问题详见:Add Digits
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?
解题思路:
如果只是针对一个非负整数,求它的数字和,我们能很快地想到下面的算法:
int digitsum(int num) { int sum=0; while(num){ sum+=num%10; num/=10; } return sum;}
如果按着这条思路走的话,这里面临的问题就是要将计算出来的数字和在每次循环之前都要判断一下和是否已经超过10,所以这样的话计算复杂度就是
class Solution {public: int addDigits(int num) { return num==0?0:(num%9==0?9:(num%9)); }};
就这么短短的一行代码,没有循环,没有递归,而且算法复杂度真的只有
- 数字和的运算算法剖析
- 数字的运算
- C#实现数字字符串的加法和自增运算
- 三木运算符嵌套和数字的转换
- BigInteger和BigDecimal--数字运算精度的设置
- 关于逻辑运算符和数字运算符的底层原理
- Python类型和运算--数字
- 数字转字符串的算法和原理
- STL算法库-数字运算(一)
- STL算法库-数字运算(二)
- STL算法库-数字运算(三)
- 给定一串数字和运算符,返回所有可能的结果,有效的运算符是+,
- ASCII码表中的数字和我们运算用的纯数字有何区别?
- 【数据结构和算法】全面剖析树的各类遍历方法
- 【数据结构和算法】全面剖析树的各类遍历方法
- 红黑树算法实现和剖析
- 有意思的数字运算组合
- 对于大数字的运算
- Liunx常用命令解析(一)--导航命令
- Oracle lsnrctl命令使用总结
- Ubuntu搭建Caffe(仅CPU)
- Struts2学习1——概述
- 文章标题
- 数字和的运算算法剖析
- 校内互测 [from abclzr] T2 (DP)
- Python3 cookbook学习笔记-数据结构与算法6
- HTTPS和HTTP的区别
- 51nod 1158 全是1的最大子矩阵 单调栈
- MCU学习——无线遥控模块
- iOS 面试题
- 子网掩码及子网划分问题
- ipython及ipython notebook常用操作