iT邦幫忙

0

leetcode with python:258. Add Digits

  • 分享至 

  • xImage
  •  

題目:

Given an integer num, repeatedly add all its digits until the result has only one digit, and return it.

給定一數,將其每一位數字相加,得出結果後重複,直到結果是個位數回傳
ex:input:38=>output:2
explanation:
38 --> 3 + 8 --> 11
11 --> 1 + 1 --> 2

這題我用最直觀的方法去做

class Solution:
    def addDigits(self, num: int) -> int:
        while num>=10:
            ans=0
            while num!=0:
                ans=ans+num%10
                num=num//10
            num=ans
        return num

我真的將每一位數相加,不斷重複,直到< 10
但這樣解時間也不算太慢
最後執行時間30ms(faster than 96.83%)

而在看過討論區後,才發現是有規則可循的
有人證出該數除9的餘數即為此題的解答
而整除的話答案就是9(除非是0)

class Solution:
    def addDigits(self, num: int) -> int:
        ans=num%9
        if ans==0 and num!=0:
            return 9 
        return ans

所以我們只要算出該數除9的餘數
再對一些特例做處理答案就到手了
最後執行時間24ms(faster than 99.78%)

那我們下題見


圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言