Contents

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

批量生成指定大小的文件