【leetcode】650.只有两个键的键盘

650. 只有两个键的键盘

最初记事本上只有一个字符 ‘A’ 。你每次可以对这个记事本进行两种操作:

  • Copy All(复制全部):复制这个记事本中的所有字符(不允许仅复制部分字符)。
  • Paste(粘贴):粘贴 上一次 复制的字符。

给你一个数字 n ,你需要使用最少的操作次数,在记事本上输出 恰好 n 个 ‘A’ 。返回能够打印出 n 个 ‘A’ 的最少操作次数。

题解

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
var minSteps = function(n) {
// n=1的情况
if(n===1) return 0;
let res = new Array(1001);
for(let i=2;i<=n;i++){
// 质数情况
res[i] = i;
for(let j=2;j<=Math.sqrt(i);++j){
if(i%j === 0){
//合数情况
res[i] = res[j]+res[i/j];
}
}
}
return res[n];
};

补充知识

判断一个数是否为素数:
判断该数在 2-√n 中是否有因数即可

1
2
3
4
5
6
function isPrime(n){
for(let i=2;i<=Math.sqrt(n);++i){
if(n%i===0) return false;// 不是素数
}
return true;// 是素数
}
文章作者: qinwei
文章链接: https://qw-null.github.io/2021/09/19/只有两个键的键盘/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 QW's Blog