↓快轉到主要內容
  1. LeetCode/

LeetCode 263: Ugly Number

·1 分鐘· ·
LeetCode Easy Math
Wei Yi Chung
作者
Wei Yi Chung
Working at the contributing of open source, distributed systems, and data engineering.
目錄

基本資料
#

難易度: easy 第一次嘗試:2022-08-23

  • 提交紀錄:Accepted(一次通過)

解題思路
#

n <= 0 一定不是。否則把 2、3、5 一直除到除不盡,如果最後剩下 1,代表沒有其他質因數(Number Theory)。

我的解法
#

class Solution:
    def isUgly(self, n: int) -> bool:
        if n <= 0:
            return False
        for p in (2, 3, 5):
            while n % p == 0:
                n //= p
        return n == 1

複雜度
#

時間 O(log n),空間 O(1)。

要特別避免的錯誤
#

  • 0 和負數要先排除,0 % p == 0 會讓迴圈停不下來。

面試口說整理
#

我先排除非正數,再把 2、3、5 一直除到除不盡,剩下 1 就是 ugly number。時間 O(log n)。

相關文章

LeetCode 292: Nim Game
·1 分鐘
LeetCode Easy Math Brainteaser Minimax-Algorithm Game-Theory
LeetCode 292 解題筆記:剩 4 的倍數顆石頭的人必輸,所以 n % 4 != 0 時先手贏
LeetCode 326: Power of Three
·1 分鐘
LeetCode Easy Math Recursion
LeetCode 326 解題筆記:一直除以 3 直到除不盡,剩 1 就是;不用迴圈的話,3^19 能被 n 整除就是
LeetCode 268: Missing Number
·1 分鐘
LeetCode Easy Array Hash-Table Math Binary-Search
LeetCode 268 解題筆記:0 到 n 的總和減掉陣列總和就是缺的那個;缺的可能是 0
LeetCode 342: Power of Four
·1 分鐘
LeetCode Easy Math Bit-Manipulation Recursion
LeetCode 342 解題筆記:先確認是 2 的次方,再確認那個 1 在偶數位:n & 0x55555555 != 0,或 n % 3 == 1
LeetCode 367: Valid Perfect Square
·1 分鐘
LeetCode Easy Math Binary-Search
LeetCode 367 解題筆記:在 [1, num] 上二分找 mid² == num,不用 sqrt
LeetCode 405: Convert a Number to Hexadecimal
·1 分鐘
LeetCode Easy Math String Bit-Manipulation
LeetCode 405 解題筆記:負數先加上 2^32 變成補數,再每次取 4 個位元(% 16)轉成十六進位;0 要特別處理