258. 各位相加

给定一个非负整数 num,反复将各个位上的数字相加,直到结果为一位数。

示例:

输入: 38

输出: 2

解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。

进阶:

你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗?

  找规律。假设 num = 384 = 3 * 100 + 8 * 10 + 4
第一轮计算 sum = 15 = 3 + 8 + 4
差值 = 3 * 99 + 8 * 9 = (3 * 11 + 8) * 9 即差值为9的倍数
第二轮计算 num = 15 = 1 * 10 + 5
sum = 6 = 1 * 0 + 5
差值 = 9
由此得出规律:num % 9
注意:需要注意 9 的整倍数最终结果应该返回9,小于10的数直接返回
class Solution {
public int addDigits(int num) {
return (num-1)%9+1;
}
}

最新文章

  1. Android中通过线程实现更新ProgressDialog(对话进度条)
  2. 办公大楼3D指纹门禁系统解决方案
  3. sass1:
  4. PROCESS_YIELD()宏使用及过程分析<contiki学习笔记之八>
  5. 异常处理 Exception
  6. 如何使用mysql
  7. .NET获取客户端的操作系统、IP地址、浏览器版本
  8. 安装lvs过程
  9. TestNG简介与安装步骤
  10. 【转载】MySQL之权限管理
  11. [国嵌笔记][017][Makefile工程管理]
  12. C++实验七
  13. IdentityServer4【Introduction】之支持的规范
  14. CDH:cdh5环境搭建
  15. 深入了解preventDefault与stopPropagation
  16. 五校联考R1 Day1T3 平面图planar(递推 矩阵快速幂)
  17. Memcached系列之一
  18. kindle 应用程序出错,无法启动选定的应用程序,请重试。问题排查过程及处理方案。
  19. Cause: org.postgresql.util.PSQLException: ERROR: cached plan must not change result type的前因后果
  20. nodejs http代理请求

热门文章

  1. [hdu5247]rmq+预处理
  2. Vue.js-Vue的初体验
  3. 内存的堆分配和栈分配 & 字符数组,字符指针,Sizeof总结
  4. AOP行为日志
  5. sound of the genuine
  6. 2.3 Go内置函数
  7. 最全面的Android Studio使用教程
  8. ie ajax 跨域情况遇到的各种问题
  9. zookeeper启动报错:Error contacting service. It is probably not running
  10. .NET CORE 依赖注入 实践总结