You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

LeetCode 2327:知晓秘密的人数——时间复杂度优化求助

秘密传播人数统计问题与优化需求

题目描述

第1天,有一个人发现了秘密。给定整数delay,表示每个人在发现秘密delay天后开始,每天都会将秘密分享给一个新的人;给定整数forget,表示每个人在发现秘密forget天后会忘记秘密,忘记当天及之后无法分享秘密。给定整数n,返回第n天结束时知晓秘密的人数,结果需对10^9+7取模。

示例

  • 示例1
    输入:n = 6, delay = 2, forget = 4
    输出:5
    解释:

    第1天:假设第一个人是A(共1人)
    第2天:只有A知晓秘密(共1人)
    第3天:A将秘密分享给新的人B(共2人)
    第4天:A将秘密分享给新的人C(共3人)
    第5天:A忘记秘密,B将秘密分享给新的人D(共3人)
    第6天:B分享给E,C分享给F(共5人)

  • 示例2
    输入:n = 4, delay = 1, forget = 3
    输出:6
    解释:

    第1天:第一个人是A(共1人)
    第2天:A分享给B(共2人)
    第3天:A和B各分享给1个新人C、D(共4人)
    第4天:A忘记秘密,B、C、D各分享给1个新人(共6人)

约束条件

2 <= n <= 1000
1 <= delay < forget <= n

我的代码

class Solution:
    def peopleAwareOfSecret(self, n: int, delay: int, forget: int) -> int:
        knowers = 0
        ogDelay = delay
        ogForget = forget
        def toldPerson(n, day, delay, forget, knowers, ogDelay, ogForget):
            knowers = 1
            while day < n:
                if day == forget:
                    knowers-=1
                elif delay <= day and day < forget:
                    knowers+=toldPerson(n, day, day+ogDelay, day+ogForget, knowers, ogDelay, ogForget)
                day += 1
            return knowers

        return toldPerson(n, 1, delay, forget, knowers, ogDelay, ogForget)

问题与需求

我原以为代码逻辑能正确统计人数,但结果返回0,完全不生效。我考虑过用列表求和的方式,但希望尽可能降低时间复杂度,求优化思路。

内容的提问来源于stack exchange,提问作者Wenderer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 04:05:08