2019-02-02

作者: ruicore | 来源:发表于2019-02-02 23:40 被阅读0次
    LeetCode 258. Add Digits.jpg

    LeetCode 258. Add Digits

    Description

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

    Example:

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

    描述

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

    示例:

    输入: 38
    输出: 2
    解释: 各位相加的过程为:3 + 8 = 11, 1 + 1 = 2。 由于 2 是一位数,所以返回 2。
    进阶:
    你可以不使用循环或者递归,且在 O(1) 时间复杂度内解决这个问题吗?

    思路

    • 数字19分别对应19,数字1018分别对应19,数字1917分别对应19,即从1开始,9个数字作为一个循环.
    • 我们用当前的数罪9取模,如果求模结果为0返回9,如果不为零返回求模运算的结果,如果num本身就是0我们直接返回0.
    # -*- coding: utf-8 -*-
    # @Author:             何睿
    # @Create Date:        2019-02-02 23:27:58
    # @Last Modified by:   何睿
    # @Last Modified time: 2019-02-02 23:29:33
    
    
    class Solution:
        def addDigits(self, num):
            """
            :type num: int
            :rtype: int
            """
            if num == 0: return 0
            b = num % 9
            return b if b != 0 else 9
    

    源代码文件在这里.
    ©本文首发于何睿的博客,欢迎转载,转载需保留文章来源,作者信息和本声明.

    相关文章

      网友评论

        本文标题:2019-02-02

        本文链接:https://www.haomeiwen.com/subject/ubwesqtx.html