LeetCode筆記:263. Ugly Number

問題:

Write a program to check whether a given number is an ugly number.
Ugly numbers are positive numbers whose prime factors only include 2, 3, 5. For example, 6, 8 are ugly while 14 is not ugly since it includes another prime factor 7.
Note that 1 is typically treated as an ugly number.

大意:

寫一個程序來檢查給出的數字是否是一個丑數字。
丑數字是指只能被2、3、5整除的正數。比如說,6、8是丑數字而14就不是丑數字因為它還有7這個約數。
注意1也被看待成丑數字。

思路:

leetcode中的題目都有有意思,一會happy數字一會ugly數字,也不知道是國外就這么叫的還是純粹出題人有童心。這個題想著也沒什么好辦法,只能分別對2、3、5去看能不能被整除,能就除一下繼續判斷,直到不能被2、3、5整數了為止,看結果是不是1,是的話就是丑數字了,不是則不丑。看了看別人的做法,也大都是這個思路,這是實現上可能有點小差異。
還有一個要注意的是題目說丑數字是個正數,但沒說給出的數字都是正數,在這里栽了個跟頭,被0和負數弄得錯了兩次,我的Accepted率啊。。。

代碼(Java):

public class Solution {
    public boolean isUgly(int num) {
        if (num <= 0) return false;
        while (true) {
            if (num % 2 == 0) {
                num = num / 2;
            } else if (num % 3 == 0) {
                num = num / 3;
            } else if (num % 5 == 0) {
                num = num / 5;
            } else if (num == 1) {
                return true;
            } else {
                return false;
            }
        }
    }
}

合集:https://github.com/Cloudox/LeetCode-Record


查看作者首頁

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容