264. Ugly Number II
阿新 • • 發佈:2018-11-22
color png class exp leetcode tle 解答 i++ ret
一、題目
1、審題
2、分析
輸出第 n 個 ugly 數值。
二、解答
1、思路
①、新建一個大小為 n 的數組 arr,存放自小到大的 ugly 數,且 arr[0] = 1。
②、采用三個指針t2、t3、t5,代表 2、3、5的指向,起始分別指向數組下標 0;且 arr[i] = Math.min(arr[t2] * 2 , Math.min(arr[t3] * 3, arr[t5] * 5))。之後對應的最小 ugly 數的指針向右移動一位。
https://leetcode.com/problems/ugly-number-ii/discuss/69364/My-16ms-C++-DP-solution-with-short-explanation
public int nthUglyNumber(int n) { if(n <= 0) return 0; int t2 = 0, t3 = 0, t5 = 0; int[] arr = new int[n]; arr[0] = 1; for (int i = 1; i < n; i++) { arr[i] = Math.min(arr[t2] * 2 , Math.min(arr[t3] * 3, arr[t5] * 5));if(arr[i] == arr[t2] * 2) t2++; if(arr[i] == arr[t3] * 3) t3++; if(arr[i] == arr[t5] * 5) t5++; } return arr[n - 1]; }
264. Ugly Number II