LeetCode 每日一题 2026/9/7-2026/9/13

记录了初步解题思路 以及本地实现代码;并不一定为最优 也希望大家能一起探讨 一起进步


目录

      • [9/7 940. 不同的子序列 II](#9/7 940. 不同的子序列 II)
      • [9/8 3870. 统计范围内的逗号](#9/8 3870. 统计范围内的逗号)
      • [9/9 3871. 统计范围内的逗号 II](#9/9 3871. 统计范围内的逗号 II)
      • [9/10 2265. 统计值等于子树平均值的节点数](#9/10 2265. 统计值等于子树平均值的节点数)
      • [9/11 3483. 不同三位偶数的数目](#9/11 3483. 不同三位偶数的数目)
      • 9/12
      • 9/13

9/7 940. 不同的子序列 II

动态规划 dpi 代表以si结尾的子序列数目

如果a<b sa=sb 则dpa,dpb会存在重复的子序列

但是dpa必定是dpb的真子集 只要将dpa中的sa变为sb及全部包含进了dpb

所以对于dpi只要记录0\~i-1间的最近的不同字符dp

res0,25分别记录a~z最近的位置

python 复制代码
def distinctSubseqII(s):
    """
    :type s: str
    :rtype: int
    """
    res = [-1]*26
    MOD = 10**9+7
    n= len(s)
    dp = [1]*n
    for i,c in enumerate(s):
        for j in range(26):
            if res[j]!=-1:
                dp[i] = (dp[i]+dp[res[j]])%MOD
        res[ord(s[i])-ord('a')] = i
        
    ans = 0
    for i in range(26):
        if res[i]!=-1:
            ans = (ans+dp[res[i]])%MOD
    return ans

9/8 3870. 统计范围内的逗号

1000开始有1个逗号 因为n<100000

最多一个数就一个逗号 统计有多少个大于999的数即刻

python 复制代码
def countCommas(n):
    """
    :type n: int
    :rtype: int
    """
    return max(0,n-999)

9/9 3871. 统计范围内的逗号 II

从右边每三位插一个逗号,不足四位没有逗号。

1,999 贡献 0;1000,999999 贡献 1;1000000,999999999 贡献 2,依此类推。

从 1000 起每次乘 1000,所有 >= x 的数各再贡献一个逗号,累加 n-x+1 直到 x>n。

python 复制代码
def countCommas(n):
    """
    :type n: int
    :rtype: int
    """
    ans = 0
    x = 1000
    while x <= n:
        ans += n - x + 1
        x *= 1000
    return ans

9/10 2265. 统计值等于子树平均值的节点数

递归 统计左右子树的总和和节点数,如果当前节点的值等于子树的平均值,则计数加1。

python 复制代码
class TreeNode(object):
    def __init__(self, val=0, left=None, right=None):
        self.val = val
        self.left = left
        self.right = right

def averageOfSubtree(root):
    """
    :type root: TreeNode
    :rtype: int
    """
    global ans
    ans = 0
    def check(node):
        if not node:
            return 0, 0
        left_sum, left_count = check(node.left)
        right_sum, right_count = check(node.right)
        total_sum = node.val + left_sum + right_sum
        total_count = 1 + left_count + right_count
        if total_sum // total_count == node.val:
            global ans
            ans += 1
        return total_sum, total_count
    check(root)
    return ans

9/11 3483. 不同三位偶数的数目

从 digits 里选三个不同下标组成三位数,个位必须是偶数,百位不能为 0,求不同数值的个数。

数组长度不超过 10,三层枚举所有下标组合,用集合去重后返回大小即可。

python 复制代码
def totalNumbers(digits):
    """
    :type digits: List[int]
    :rtype: int
    """
    s = set()
    n = len(digits)
    for i in range(n):
        if digits[i] % 2:
            continue
        for j in range(n):
            if j == i:
                continue
            for k in range(n):
                if k == i or k == j or digits[k] == 0:
                    continue
                s.add(digits[k] * 100 + digits[j] * 10 + digits[i])
    return len(s)

9/12

python 复制代码

9/13

python 复制代码

相关推荐
秋天的怀念_David4 小时前
算法一千零一夜 · 第十四夜 幻方与奇妙的二进制
java·程序人生·算法
薛定e的猫咪4 小时前
(ICLR 2020)MAML 靠的不是快速学习,而是特征复用
人工智能·深度学习·学习·算法·机器学习
薛定e的猫咪5 小时前
(ICLR 2026)DF-META:面向 FJSP 的无导数元学习实例自适应调度
人工智能·深度学习·学习·算法·机器学习
java_nnnn6 小时前
LeetCode刷题滑动窗口(水果成篮+找到字符串中所有字母的异位词)Java
java·开发语言·leetcode
小羊没烦恼!6 小时前
异步编程:线程概述及使用
java·开发语言·mysql·算法·c#
wanderist.6 小时前
202609CSP认证P3
算法
云淡风轻~窗明几净7 小时前
角谷猜想最接近严格证明的测试 Version1.1.1
人工智能·算法·机器学习·图论
机器学习之心7 小时前
PINN × SVM × NSGA-II × 熵权TOPSIS:一套跑通「建模—优化—决策」的多目标优化框架
算法·机器学习·支持向量机
别动我齐刘海8 小时前
机器人 C++ / 系统联调补强2——异常处理、Protobuf
linux·c++·人工智能·学习·算法·机器学习·机器人
文丑颜不良啊8 小时前
LeetCode276~300题目解析
java·leetcode