Ugly Number
263 Ugly Number I
public boolean isUgly(int num) {
int[] ugly = {2, 3, 5};
for (int prime : ugly){
while(num % prime == 0 && num > 0){
num /= prime;
}
}
return num == 1;
}264 Ugly number II
public int nthUglyNumber(int n) {
int index_2 = 0, index_3 = 0, index_5 = 0; // the index on array
int factor_2 = 1, factor_3 = 1, factor_5 = 1; // start with 1
int[] arr = new int[n];
int min = 1;
for( int i = 0; i < n; i++){
arr[i] = min;
if (factor_2 == min) factor_2 = arr[index_2++] * 2;
if (factor_3 == min) factor_3 = arr[index_3++] * 3;
if (factor_5 == min) factor_5 = arr[index_5++] * 5;
min = Math.min(factor_2, Math.min(factor_3, factor_5));
}
return arr[n-1];
}313 Super ugly number
Last updated