醜い数I

1.需要

  • 所定数は醜い番号であるかどうかを決定するためのプログラムを書く。醜い数は正の整数のみ素因数を含みます 2, 3, 5

例1:

入力: 6
出力: true
説明: 6 = 2×3

説明:

  1. 1 醜い数字です。
  2. 入力は、32ビットの符号付き整数の範囲[-2 ^ 31、2 ^ 31 −1]を超えません。

第二に、ラウンドロビン方式

3.1思考分析

  1. 質問の意味によると、醜い数には2、3、5しか含まれていません。不明な数があるので、1つずつ割ることができます。与えられた数が2で割り切れる場合は、最初に削除します。その因数2、次に因数3を削除します。最後に因数5が削除されます。数値が醜い数値の場合、これらの3回のラウンドの後、その値は1でなければなりません。1でない場合は、醜い数ではありません。

3.2コードの実装

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

3.3複雑さの分析

  • 時間計算量はO(logN);
  • スペースの複雑さはO(1)です。

 

おすすめ

転載: blog.csdn.net/Sruggle/article/details/113762777