- 博客(104)
- 收藏
- 关注
原创 七月集训(17,18)
很明显的并查集的题目,统计每个连通块的元素个数然后找到每个集合的代表元素,那么这个连通块不能直接到达的点就是(n-cnt[fa[i]]),把他们统计到一起即可。输入n=7,edges=[[0,2],[0,5],[2,4],[1,6],[5,4]]输入root=[1,null,2,3,4,null,null,5,6]输入n=3,edges=[[0,1],[0,2],[1,2]]输入root=[2,3,9,10,7,8,6,5,4,11,1]输入root=[1,1]...
2022-07-18 06:13:17
186
原创 七月集训(16)动态规划
首先我们定义dp数组为f[i][j]表示第i天保守了秘密j天的人数,那么自然的如果j>1的情况下f[i][j]=f[i-1][j-1],因为在第i天保守了秘密j天的人数自然是由第i-1天保守了秘密j-1天转移过来的。那么这是每一天的状态来源,如果只看单个的某天,他会将自己的状态转移给[i+delay,i+forget-1]这些天数,我们直接遍历每个i,用i的状态往后转移即可,最后统计[n-forget+1,n]这些天新增的人数即可。在第1天,有一个人发现了一个秘密。...
2022-07-16 08:35:48
229
原创 七月集训(13)双向链表
原题链接 本题与其说是算法题,不如更像是实现双向链表的增删查改,当然你可以利用双栈(吧光标看作在两个栈之间,左边为栈1,右边为栈2,不同的操作吧字符放到对应的栈即可,这种方法没什么难度类似于用两个栈实现队列)下面对题目要求函数一个一个讲解。 为了便于操作我们虚拟出来一个哨兵位:dummy作为头结点,再额外定义一个cur,他的意义是光标目前位于cur指向结点的右边。 对于addText操作就是单纯的双向链表的插入操作了,不过这里我们要实现的是在任意位置的插入,所以
2022-07-13 06:26:23
157
原创 七月集训(12)链表
原题链接 本题的做法和LeetCode:59. 螺旋矩阵 II 的做法十分详细,唯一的差距就是我们的数据源由vector变为了list,那么本题的做法也是有很多,定义一个方向数组和记录数组下标状态的数组index(题目特意提醒了我们mn......
2022-07-12 06:19:35
124
原创 七月集训(10)位运算
原题链接 老经典的题了,不适用中间变量把这两个数异或三次即可,比如a,b , 第一次异或后a= a^b, 第二次异或后 b=a ^ b ^ b=a ,最后一次异或 a= a ^ b ^ a =b;2.LeetCode:1342. 将数字变成 0 的操作次数原题链接 这道题的做法真的是很多很多很多,可以模拟,可以遍历,可以递归,可以用各种位运算技巧来做。这里就介绍一种简单易于理解的位运算的方法。 根据规则我们知道,当num最后一位为1也就是奇数需要减去他,如果
2022-07-10 06:10:11
199
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人