2 Keys Keyboard
Thoughts
Code
class Solution {
public int minSteps(int n) {
int[] f = new int[n + 1];
if (n == 1) {
return f[1];
}
f[2] = 2;
for (int i = 2; i <= n; i++) {
if (i % 2 != 0) {
if (f[i] == 0) {
f[i] = i;
} else {
f[i] = Math.min(i, f[i]);
}
}
int j = 1, index = i * (j + 1), steps = f[i] + 1 + j;
while (index <= n) {
if (f[index] == 0) {
f[index] = steps;
} else {
f[index] = Math.min(f[index], steps);
}
//System.out.println(i + ", " + f[i] + ": " + index + ", " + f[index]);
j++;
index = i * (j + 1);
steps = f[i] + 1 + j;
}
}
return f[n];
}
}Analysis
Ver.2
Last updated