LeeCode题解
文章平均质量分 94
整理去年写题一个月的心得
随行佯醉
这个作者很懒,什么都没留下…
展开
-
力扣——并查集算法系列
否则的话就要把这两棵子树连到一起,最简单的做法就是直接把 ru 连到 rv 下面,当作它的子结点,那么就需要更新 f[ru] = rv。那么我们定义查找根结点函数 find(u) ,如果 u = f[u] ,那么不用找了,它自己就是根结点。最后做一步路径压缩的优化,把根结点当作 u 的父结点: f[u] = find(f[u])。这样下次再查找的时候,路径长度就变为了 1 ,一步就能找到根结点了。合并两棵子树的时候,为了使得合并后的子树高度尽量小,需要把高度小的那棵子树接在高度高的那棵下面,当作儿子。原创 2024-04-22 11:39:51 · 756 阅读 · 0 评论 -
力扣——位运算系列
而对于输入 1 ,状态转移就很有意思了。该位上为 0 的数对和没有影响,该位上为 1 的数,会使得 1 加三次,那么如果不算 a 的该位,求出的和应该是 3 的倍数。在逐位考虑这种方法里面,res 一开始被初始化为 0 ,从本质上而言,只需要找到 res 中为 1 的位就可以了,而逐位考虑法将 0 也考虑了,其实是冗余的。前面说到状态 1 会找到每个新出现的数字,出现在状态 2 的数字则都是会出现三次的数字,状态机某一时刻只会出现在一种状态,需要考虑的就是怎么用表达式更新状态 1 和状态 2 的值。原创 2024-04-22 11:28:15 · 781 阅读 · 0 评论