LeetCode #263 #264 2018-08-07

263. Ugly Number

https://leetcode.com/problems/ugly-number/description/

這道題比較簡單,相當(dāng)于從num中不斷除去2,3,5,最后比較結(jié)果是否為1即可。
代碼如下:

class Solution:
    def isUgly(self, num):
        """
        :type num: int
        :rtype: bool
        """
        if num <= 0:
            return False
        for i in (2, 3, 5):
            while num % i == 0:
                num /= i
        return num == 1

264. Ugly Number II

https://leetcode.com/problems/ugly-number-ii/description/

解法相當(dāng)于利用了3個(gè)指針,每次取三種可能結(jié)果里最小的。
需要注意的是每個(gè)判斷都需要用if單獨(dú)判斷,使用elif會(huì)錯(cuò)誤。因?yàn)閞esult[i2]2和result[i3]3可能相等,例如32==23,此時(shí)i2和i3都需要加1才正確。
代碼如下:

class Solution:
    def nthUglyNumber(self, n):
        """
        :type n: int
        :rtype: int
        """
        result = [1]
        i2, i3, i5 = 0, 0, 0
        for i in range(1, n):
            u2, u3, u5 = result[i2]*2, result[i3]*3, result[i5]*5
            umin = min((u2, u3, u5))
            if umin == u2:
                i2 += 1
            if umin == u3:
                i3 += 1
            if umin == u5:
                i5 += 1
            result.append(umin)
        return result[-1]
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容