← [ BACK_TO_NOTES ]

求一个整数的惩罚数

2698. 求一个整数的惩罚数 - 力扣(LeetCode)

#algorithm #snippet #evergreen #leetcode #backtracking

[!info] related notes 算法面试题型 MOC 回溯

求一个整数的惩罚数

题目

2698. 求一个整数的惩罚数 - 力扣(LeetCode)

题解

链表-二叉树-回溯

var punishmentNumber = function (n) {

    // p 的含义是当前是处理下标 p 后的字符串;sum 表示当前情况下前 p 位 的和
    function dfs(p, sum, s, i) {
        const n = s.length;
        if (p === n) {
            return sum === i;
        }
        let x = 0;
        // 增量构造,枚举当前层的每一种可能性
        for (let j = p; j < n; j++) {
            x = x * 10 + parseInt(s[j])
            if (dfs(j + 1, sum + x, s, i)) {
                return true;
            }
        }
        return false;
    }

    const PRE_SUM = new Array(1001).fill(0);
    for (let i = 1; i <= 1000; i++) {
        const s = (i * i).toString();
        PRE_SUM[i] = PRE_SUM[i-1] + (dfs(0, 0, s, i) ? i * i : 0);
    }
    return PRE_SUM[n];
};

参考

创建于 2025/1/1 更新于 2026/7/15
Digital Biome
Access

键盘导航

j / k / ↑ / ↓
选择对象
Enter / o
打开选择
/ 或 Ctrl+K
全站搜索
i / f / 1–4
筛选当前列表
g → h / l / p / t / a
首页 / 笔记 / 项目 / 工具 / About
r → 1–9
打开所选对象的关联
u
返回上一页
Esc
关闭浮层 / 取消命令;输入框内清空文本