【Leetcode Daily】2872可以被K整除的连通块的最大数目
发表于|更新于|力扣日常 | LeetcodeDaily
|总字数:339|阅读时长:1分钟|浏览量:
题目浅析
想查看原题可以点击题目链接。
简单地说,就是给一个无向树,共 n 个节点,每个节点编号 0到n-1,再给一个数字k,整个树之和能被 k 整除,现在要尽可能地把树划分成多个连通块,每个块的和也能被 k 整除。
思路分享
- 分两步,第一步是计算连通块的和,第二步是删除边。通过 dfs,可以由小到大地计算出可以被 k 整除的那些情况,然后可以删去入口与其父节点的边(实质上是二叉无向树),最后计算删除的边数 + 1即可。实际实现时,算上了根节点和不存在的父节点,所以不用 + 1.
代码解答(强烈建议自行解答后再看)
- 参考题解
1 | class Solution: |
文章作者: 陆爻齐-LuYaoQi
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 LuYaoQi's Blogs!
相关推荐

2025-08-13
【Leetcode Daily】1003检查替换后的词是否有效
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一个字符串,该字符串是从一个空字符串开始,不断插入“abc”形成的,这个插入是从字符串的任意处都可以行动。 思路分享 这个题目和实际的题意完全不是一个意思,坏。不过这个不重要。 发现做栈,只要把握一点,就是何时弹栈。例如本题,只要意识到,弹栈的时候,正在遍历的字母是 c,栈顶有 a 和 b,就轻松地写出了条件。 这个条件应该不是最快的,因为只要中间的 abc 有一处无法正确匹配,就可以算是检测不过关,所以更快的思路应该是按照正在遍历的 abc 三种情况,分别检测栈是否符合“正常”。 https://leetcode.cn/problems/check-if-word-is-valid-after-substitutions/solutions/2253773/zhan-jian-ji-xie-fa-pythonjavacgo-by-end-i9o7/ 本题不断插入 abc,并要求检测是否都是...

2025-05-08
【Leetcode Daily】1004最大连续1的个数III
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一个由 0 和 1 组成的整数数组,现在最多可以把其中 k 个 0 反转成 1。求反转后最长连续 1 的个数。 思路分享 纯粹的不定长滑动窗口(【Leetcode Daily】3090每个字符最多出现两次的最长字符串),无需多盐。 代码解答(强烈建议自行解答后再看) 陆爻齐的解法 1234567891011121314151617class Solution {public: int longestOnes(vector<int>& nums, int k) { int zero_count = 0; int left = 0; int n = nums.size(); int ans = 0; for (int i = 0; i < n;i++) { zero_count += 1-nums[i]; while(zero_count...

2025-08-24
【Leetcode Daily】1006笨阶乘
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给你一个数字 n,求其笨阶乘。所谓的笨阶乘,就是把原本的从 n 乘到 1 改成按照 * / + - 顺序执行符号的运算式。 思路分享 对于运算表达式就要想到通过栈可以处理,由于运算符有优先级,所以遇到一个数就马上计算是不可行的。 乘除立即算,加减先入栈。这样子下来,栈内最后只剩下待加值,求和即可。 https://leetcode.cn/problems/clumsy-factorial/solutions/693117/fu-xue-ming-zhu-yu-dao-cheng-chu-li-ji-s-furg/ 为什么乘除立即算呢?因为乘除是高优先级运算,即使把乘除入栈了,后续计算时也要优先拿出来算完再与其它数算,倒不如入栈前就先算了。 代码解答(强烈建议自行解答后再看) 参考题解 12345678910111213141516class Solution: def clumsy(self, n: int) -> int: nums = [n] opr...

2026-01-27
【Leetcode Daily】100相同的树
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给两个二叉树,判断这两个树是否相同(节点上的值和结构)。 思路分享 和 【Leetcode Daily】965单值二叉树 差不多,判断两个二叉树是否相同,就是看两个节点值是否相同,节点左子树和右子树是否相同,不断递归下去。 https://leetcode.cn/problems/same-tree/solutions/2015056/ru-he-ling-huo-yun-yong-di-gui-lai-kan-s-empk/ 代码解答(强烈建议自行解答后再看) 参考题解 1234567891011# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution: def...

2026-01-19
【Leetcode Daily】1019链表中的下一个更大的节点
题目浅析 想查看原题可以点击题目链接。 简单地说,就是给一个链表,现在对于每个节点,要找下一个比它更大的节点的值。 思路分享 两个关键点:1. 是严格更大,相同不算;2. 根据评论区所言,如果感到不知所措,就可以尝试转成数组来思考。 本题可以通过倒序遍历+单调栈来解决,单调栈存储每个节点的下一个更大的值(没有就用 0),倒序遍历就是单调栈,让遍历每一个值的时候,可以 O(1) 判断其右侧还有没的更大值。 https://leetcode.cn/problems/next-greater-node-in-linked-list/solutions/2217563/tu-jie-dan-diao-zhan-liang-chong-fang-fa-v9ab/ 代码解答(强烈建议自行解答后再看) 参考题解 1234567891011121314151617181920212223242526272829# Definition for singly-linked list.# class ListNode:# def __init__(self, val=0,...

2026-01-28
【Leetcode Daily】101对称二叉树
题目浅析 想查看原题可以点击题目链接。 简单地说,就是判断一个二叉树是否轴对称。 思路分享 通过递归,可以轻松判断两个二叉树是否相同,判断是否轴对称只要转换成判断二叉树根节点的左右子树是否结构相同,值则是左对右,右对左即可。 https://leetcode.cn/problems/symmetric-tree/solutions/2015063/ru-he-ling-huo-yun-yong-di-gui-lai-kan-s-6dq5/ 代码解答(强烈建议自行解答后再看) 参考题解 123456789101112131415# Definition for a binary tree node.# class TreeNode:# def __init__(self, val=0, left=None, right=None):# self.val = val# self.left = left# self.right = rightclass Solution: def isSame(self,...
公告
希望你我都能得偿所愿
PS:相对流水账的文章只能在归档找得到
系列文章

