Leetcode 263:丑数(超详细的解法!!!)

版权声明:本文为博主原创文章,未经博主允许不得转载。有事联系:[email protected] https://blog.csdn.net/qq_17550379/article/details/88838441

编写一个程序判断给定的数是否为丑数。

丑数就是只包含质因数 2, 3, 5正整数

示例 1:

输入: 6
输出: true
解释: 6 = 2 × 3

示例 2:

输入: 8
输出: true
解释: 8 = 2 × 2 × 2

示例 3:

输入: 14
输出: false 
解释: 14 不是丑数,因为它包含了另外一个质因数 7。

说明:

  1. 1 是丑数。
  2. 输入不会超过 32 位有符号整数的范围: [ 2 31 , 2 31 1 ] [−2^{31}, 2^{31} − 1]

解题思路

这个问题非常简单,我们对于[2,3,5]取摸,看余数是不是0,如果是0的话,我们就输入的数num//[2,3,5]即可。如果最后num==1,那么我们返回True,否则返回False

接着还需要考虑边界问题,当num == 0的时候,我们返回False

class Solution:
    def isUgly(self, num: int) -> bool:
        if num == 0:
            return False
        
        for i in [2,3,5]:
            while num%i == 0:
                num //= i
            if num == 1:
                return True
        return False

写得更加简洁的话

class Solution:
    def isUgly(self, num: int) -> bool:
        for p in [2, 3, 5]:
            while num and num%p == 0:
                num //= p
        return num == 1

我将该问题的其他语言版本添加到了我的GitHub Leetcode

如有问题,希望大家指出!!!

猜你喜欢

转载自blog.csdn.net/qq_17550379/article/details/88838441
今日推荐