279. Perfect Squares
动态规划,用一个array存放到每个数经过的最少次数。
public class Solution {
public int numSquares(int n) {
int[] res = new int[n + 1];
res[0] = 0;
for (int i = 1; i <= n; i++) {
int min = Integer.MAX_VALUE;
for (int j = 1; 0 <= i - j * j; j++) {
if (min > res[i - j * j]) min = res[i - j * j];
}
res[i] = min+1;
}
return res[n];
}
}
268. Missing Number
public class Solution {
public int missingNumber(int[] nums) {
int n = nums.length;
int sum = n * (n + 1) / 2;
for (int i = 0; i < n; i++) {
sum -= nums[i];
}
return sum;
}
}
313. Super Ugly Number
public class Solution {
public int nthSuperUglyNumber(int n, int[] primes) {
int[] ugly = new int[n];
int[] index = new int[primes.length];
int[] val = new int[primes.length];
Arrays.fill(val, 1);
int next = 1;
for (int i = 0; i < n; i++) {
ugly[i] = next;
next = Integer.MAX_VALUE;
for (int j = 0; j < primes.length; j++) {
if (val[j] == ugly[i]) val[j] = ugly[index[j]++] * primes[j];
next = Math.min(next, val[j]);
}
}
return ugly[n - 1];
}
}