ARST打卡第124周[124/521]

Algorithm

lc650_只有两个键的键盘
动态规划,按照所有的因数来递归分解, 还可以分解质因数

详细题解见下面的链接
链接:https://leetcode-cn.com/problems/2-keys-keyboard/solution/zhi-you-liang-ge-jian-de-jian-pan-by-lee-ussa/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 动态规划,按照所有的因数来递归分解
class Solution {
public:
int minSteps(int n) {
vector<int> f(n + 1);
for (int i = 2; i <= n; ++i) {
f[i] = INT_MAX;
for (int j = 1; j * j <= i; ++j) {
if (i % j == 0) {
f[i] = min(f[i], f[j] + i / j);
f[i] = min(f[i], f[i / j] + j);
}
}
}
return f[n];
}
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 还可以分解质因数
class Solution {
public:
int minSteps(int n) {
int ans = 0;
for (int i = 2; i * i <= n; ++i) {
while (n % i == 0) {
n /= i;
ans += i;
}
}
if (n > 1) {
ans += n;
}
return ans;
}
};

Review

【TED演讲】人性、名誉和爱情的思考

学会爱他人,爱万物,爱和怜悯

Tips

让事件飞 ——Linux eventfd 原理与实践

Share

批量生成指定大小的文件