剑指 Offer 49. 丑数

2020-11-19  本文已影响0人  BitterOutsider

题目描述

我们把只包含质因子 2、3 和 5 的数称作丑数(Ugly Number)。求按从小到大的顺序的第 n 个丑数。

解题思路

class Solution {
    public int nthUglyNumber(int n) {
        int n2Index = 0;
        int n3Index = 0;
        int n5Index = 0;
        final ArrayList<Integer> ugly = new ArrayList<>();
        ugly.add(1);
        for (int i = 1; i < n; i++) {
            int n2 = ugly.get(n2Index) * 2;
            int n3 = ugly.get(n3Index) * 3;
            int n5 = ugly.get(n5Index) * 5;
            int min = Math.min(Math.min(n2, n3), n5);
            if (n2 == min) n2Index++;
            if (n3 == min) n3Index++;
            if (n5 == min) n5Index++;
            ugly.add(min);
        }
        return ugly.get(n - 1);
    }
}
上一篇 下一篇

猜你喜欢

热点阅读