剑指 Offer 49. 丑数

108 阅读1分钟
class Solution {
    public int nthUglyNumber(int n) {
        int[] arr = new int[n];
        arr[0] = 1;
        int i = 0, j = 0, k = 0;
        for (int m = 1; m < n; m++) {
            int t = Math.min(arr[i] * 2, Math.min(arr[j] * 3, arr[k] * 5));
            arr[m] = t;
            if (arr[i] * 2 == t) i++;
            if (arr[j] * 3 == t) i++;
            if (arr[k] * 5 == t) k++;
        }
        return arr[n - 1];
    }
}