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
相关产品推荐
相关产品推荐

