美文网首页
LeetCode #263 #264 2018-08-07

LeetCode #263 #264 2018-08-07

作者: 40巨盗 | 来源:发表于2018-08-07 19:40 被阅读0次

    263. Ugly Number

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

    这道题比较简单,相当于从num中不断除去2,3,5,最后比较结果是否为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/

    解法相当于利用了3个指针,每次取三种可能结果里最小的。
    需要注意的是每个判断都需要用if单独判断,使用elif会错误。因为result[i2]2和result[i3]3可能相等,例如32==23,此时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]
    

    相关文章

      网友评论

          本文标题:LeetCode #263 #264 2018-08-07

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