关闭

菜鸟写给菜鸟的 ——LeetCode解题笔记 Easy-题目2:258. Add Digits

标签: leetcode
240人阅读 评论(0) 收藏 举报
分类:

题目原文:
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?
题目大意:
给一个正整数num,重复地计算每一个数位上数字之和,直到只剩一位数。
例如:给数字38,则3+8=11,1+1=2,那么返回2.
你可以不需要循环或递归,在O(1)时间完成它吗?
题目分析:
根据Hint中给出的wiki链接,这道题叫做数字根问题。求一个正整数n的数字根有如下公式: 因此可以一行解决。
源码:(language:c)

int addDigits(int num) {
    return 1+(num-1)%9;
}

成绩:
4ms,beats56.87% 众数:8ms 52.28%
Cmershen的碎碎念:
如果不给出hint,我是怎么也推不出这个公式。在这里感叹数学的强大,也希望有人能给出这个公式的证明。

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:55956次
    • 积分:3198
    • 等级:
    • 排名:第10679名
    • 原创:270篇
    • 转载:53篇
    • 译文:0篇
    • 评论:7条
    文章分类
    最新评论