Java実装醜い番号LeetCode 264 II(B)

264醜い番号II

n番目の醜い番号を検索するプログラムを書きます。

醜いは、素因数の数だけ2、3、5の正の整数で含有します。

例:

入力:N = 10
出力:12
説明:1、2、3、4、5、6、8、9、10、12はフロント数醜い10です。
説明:

図1は、醜いの数です。
n個以上1690以下ではありません。

class Solution {
      public int nthUglyNumber(int n) {
        if (n <= 0) {
            return 0;
        } 
        int[] result = new int[n];
        result[0] = 1;//作为第一个丑树
        int divisor2 = 0;
        int divisor3 = 0;
        int divisor5 = 0;
        for (int i = 1;i < n;i++) {
            int multiply2 = result[divisor2] * 2;
            int multiply3 = result[divisor3] * 3;
            int multiply5 = result[divisor5] * 5;
            int min = Math.min(multiply2,Math.min(multiply3,multiply5));
            //将最小的丑树放入结果集中,用于下一次计算
            result[i] = min;
            //找出对应此次计算最小丑树的因子,并移动指针指向下一次计算丑树对应的老丑树下标
            if (multiply2 == min) {
                divisor2++;
            }
            if (multiply3 == min) {
                divisor3++;
            }
            if (multiply5 == min) {
                divisor5++;
            }
        }
        return result[n-1];
    }
}
リリース1388元の記事 ウォンの賞賛10000 + ビュー141万+

おすすめ

転載: blog.csdn.net/a1439775520/article/details/104643868
264