掘友等级

获得徽章 19
#刷题交流# Bytedance Tree 问题:
解题思路:
1.构建树:根据输入的边信息构建树的邻接表。
2.DFS/BFS遍历:从根节点开始进行DFS或BFS遍历,记录每个节点的礼物信息。
3.划分连通分块:在遍历过程中,根据节点的礼物信息进行划分。如果当前节点的礼物与父节点的礼物不同,则开始一个新的连通分块。
4.计算划分方式:统计所有可能的划分方式,并对结果取模 998244353。
#刷题交流# 最少步数归零问题:
解题思路:
步骤1:遍历数组中的每个数字。
步骤2:将每个数字转换为字符串或数组,以便逐位处理。
步骤3:计算每个数字的位数(即长度),因为每删除一位都需要一步。
步骤4:将所有数字的位数相加,得到总的最少步数。
#刷题交流# 红包运气排行榜:
解题思路:
1.初始化数据结构:创建一个数组,将每个人的名字、抢到的金额和原始位置存储为对象。
2.排序:根据以下规则对数组进行排序:
首先按 amount 降序排序。
如果 amount 相同,则按 index 升序排序。
3.提取结果:从排序后的数组中提取出名字,形成最终的排名结果。
#刷题交流# 卡牌翻面求和问题:
解题思路:
1.定义状态:
我们可以使用一个二维数组 dp[i][j],其中 i 表示前 i 张卡牌,j 表示当前和除以3的余数(0, 1, 2)。dp[i][j] 表示前 i 张卡牌中,和除以3余数为 j 的组合数。
2.状态转移:
对于每一张卡牌,我们可以选择正面或背面:
如果选择正面,新的和为 sum + a[i-1]。
如果选择背面,新的和为 sum + b[i-1]。
更新 dp 数组时,我们需要考虑这两种选择。
3.初始化:
dp[0][0] = 1,表示没有卡牌时,和为0的组合数为1。
dp[0][1] = 0,dp[0][2] = 0,表示没有卡牌时,和除以3余数为1或2的组合数为0。
4.最终结果:
最终结果为 dp[n][0],即前 n 张卡牌中,和除以3余数为0的组合数。
#刷题交流# 环形数组中的最大贡献值:
解题思路:
1.计算距离:
对于任意两个下标 i 和 j,距离 dist(i, j) 可以通过两种方式计算:
直接距离:|i - j|
环形距离:n - |i - j|
取两者中的最小值作为 dist(i, j)。
2.遍历所有可能的组合:
对于每一个可能的 (i, j) 组合,计算 f(i, j)。
记录并更新最大值。
#刷题交流# 最少前缀操作问题:
解题思路:
1.初始化操作次数:从0开始。
2.双指针遍历:使用两个指针分别遍历 S 和 T,直到其中一个指针到达字符串的末尾。
3.字符比较:
如果 S[i] 和 T[j] 相等,则两个指针都向前移动。
如果 S[i] 和 T[j] 不相等,则需要进行一次修改操作,并且两个指针都向前移动。
4.处理剩余字符:如果 S 的指针已经到达末尾,而 T 的指针还没有到达末尾,则需要删除 S 的剩余字符。
5.返回操作次数:最终的操作次数即为所需的最少操作次数。
#刷题交流# 字典序最小的01字符串:
解题思路:
1.遍历字符串,记录当前已经处理的字符数(即已经确定位置的字符数)。
2.对于每个字符,如果它是'0',计算将其移到当前已处理字符的末尾所需的最小交换次数。
3.如果交换次数不超过k,则进行交换,并更新k和已处理字符数。
4.如果交换次数超过k,则跳过该字符,继续处理下一个字符。
#刷题交流# 最大UCC子串计算:
解题思路:
1.初始化:
dp[0][j] = 0 对于所有 j,因为空字符串中不可能有 "UCC" 子串。
dp[i][0] = 0 对于所有 i,因为不进行任何编辑操作时,不可能增加 "UCC" 子串。
2.状态转移:
对于每个字符 s[i-1],我们需要考虑三种操作:插入、删除、替换。
如果 s[i-1] 是 'U',我们需要考虑在其前面插入 "CC" 的可能性。
如果 s[i-1] 是 'C',我们需要考虑在其前面插入 "U" 的可能性。
通过这些操作,我们可以更新 dp[i][j] 的值。
3.最终结果:
最终答案是 dp[n][m],其中 n 是字符串 s 的长度。
#刷题交流# 红包运气排行榜:
解题思路:
1.初始化数据结构:创建一个数组,将每个人的名字、抢到的金额和原始顺序存储到这个数组中。
2.排序:根据题目要求进行排序:
首先按照抢到的金额进行降序排序。
如果金额相同,则按照原始顺序进行升序排序。
3.提取结果:从排序后的数组中提取出名字,形成最终的排名结果。
#刷题交流# DNA序列编辑距离:
解题思路:
1.插入:在 dna1 中插入一个碱基。
2.删除:从 dna1 中删除一个碱基。
3.替换:将 dna1 中的一个碱基替换为另一个碱基。
下一页