博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LeetCode] 258. Add Digits
阅读量:4312 次
发布时间:2019-06-06

本文共 889 字,大约阅读时间需要 2 分钟。

Given a non-negative integer num, repeatedly add all its digits until the result has only one digit.

Example:

Input: 38Output: 2 Explanation: 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?

题意:把2一个数拆开,最终变成一个1-9的数字

最先看到题先想到的是递归拆,勉强过了

Java

1  public int addDigits(int num) { 2         System.out.println(num); 3         if (num <= 9) 4             return num; 5         int sum = 0; 6         while (num != 0) { 7             sum += num%10; 8             num = num/10; 9         }10         return addDigits(sum);11     }12 }

显然题意不可能是用这个算法,末尾也有提示说O(1) 的算法复杂度,那就只能找规律了

1-9   10 11 12 13 18  19-27

1-9   1-9                       1-9

规律就比较明显了

Java

1 class Solution {2 3     public int addDigits(int num) {4         return (num-1)%9 + 1;5     }6 }

 

转载于:https://www.cnblogs.com/Moriarty-cx/p/9589282.html

你可能感兴趣的文章
02_servlet介绍
查看>>
详解Django的 select_related 和 prefetch_related 函数对 QuerySet 查询的优化
查看>>
svn出现skips remain conficted,不能更新代码问题
查看>>
实验4
查看>>
day 13 内置函数 闭包:
查看>>
Angular——自定义指令
查看>>
SQL Server nested loop join 效率试验
查看>>
pg数据库sql积累
查看>>
python字符串常用函数
查看>>
数据结构
查看>>
列表生成式,生成器表达式,模块
查看>>
Android注解框架实战-ButterKnife(原创)
查看>>
三、回归问题与应用
查看>>
第二届PHP全球开发者大会(含大会的PPT)
查看>>
5.23BOM
查看>>
SVN使用教程
查看>>
献给初学者:谈谈如何学习Linux操作系统
查看>>
vb中的反正弦函数
查看>>
Match:Keywords Search(AC自动机模板)(HDU 2222)
查看>>
ASM:《X86汇编语言-从实模式到保护模式》第16章:Intel处理器的分页机制和动态页面分配...
查看>>