leetcode-Add Digits
来源:互联网 发布:什么是js文件 编辑:程序博客网 时间:2024/06/05 07:43
题目:给定一个非负整数num, 重复将其各个位数上的数字进行求和操作,直到结果为1-9的数(个位数)为止。
比如: 给出num = 38 , 计算过程如下: 3 + 8 = 11 , 1 + 1 = 2, 因为2 为个位数, 返回。
要求:在 不用循环或递归的情况下,时间复杂度为O(1) ?
一开始,没什么思路,就手动计算几个数看看。
输入:1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20......
输出: 1,2,3,4,5,6,7,8,9,1,2,3,4,5,6,7,8,9,1,2.......
可以看出,输出结果为9个一循环,所以自然而然想到 以9为底,取余。但这样,9,18,这种9的倍数就为0了,所以要单独加个条件判断。
代码如下:
public class Solution { public int addDigits(int num) { if (num < 0 ) return -1; if (num % 9 == 0 ) return 9 ; return num % 9; }}
这样觉得有点麻烦,看看有没有更高效简短的代码,通过查询讨论区中各大神的方法,看到一种很棒的解法。
public class Solution { public int addDigits(int num) { if (num < 0 ) return -1; return 1 + (num - 1)%9; }}
通过减1,加1的方式很好的避免了数为9的倍数时,取余为0的尴尬。
0 0
- [leetcode][math] Add Digits
- [leetcode] Add Digits
- 【leetcode】Add Digits【java】
- Leetcode: Add Digits
- LeetCode Add Digits
- [LeetCode] Add Digits
- leetcode 258: Add Digits
- LeetCode题解:Add Digits
- leetcode: Add Digits
- 258Add Digits - LeetCode
- leetCode #258 Add Digits
- [LeetCode 258] Add Digits
- LeetCode: Add Digits
- LeetCode:Add Digits
- leetcode--add digits
- leetcode Add Digits
- leetcode--Add Digits
- leetcode Add Digits
- 基础类---调用堆栈
- VBA 复制工作簿内容
- JavaSe基础(24)-- 集合
- Android Error:Failed to install *.apk on device *: timeout Launch canceled!
- iOS字体 动态下载系统提供的多种中文字体
- leetcode-Add Digits
- ExtJs--16--Ext.override()方法专门用来重写对象的方法
- session_usrname.php
- Glide动画加载
- hdu 1078(记忆化搜索)
- 顺畅类
- 过滤器
- hibernate5(8)操纵对象入门[3]操控对象封装方法
- 物联网时代的嵌入式开发平台