- 博客(17)
- 收藏
- 关注
原创 leetcode 684 冗余连接 题解
这题用鸡毛并查集啊,直接 tarjan 求割边呗,为了水这篇题解,我还专门写了个 tarjan 的博客,嘿嘿。
2024-10-27 18:12:53 316
原创 tarjan求割点、割边
首先引出割点和割边的概念,给定一张无向连通图,选定一条边,当我们把这条边从图中删除的时候,如果整个图分裂成了两个子图,那么我们管这条边叫做割边或者桥。割点也是同理,删除这个点之后,如果整个图分裂成了两部分,那么我们管这个点叫做割点。
2024-10-27 18:03:27 673
原创 2024 CSP-J 题解
题目给出了一整套牌的定义,但是纯粹在扯淡,完全没有必要去判断给出的牌的花色和点数,我们用一个循环来依次读入每一张牌,如果这个牌在之前出现过,我们就让答案减一。这里建议用map、unordered_set或者给每一种牌一个编号,然后用数组存储也可以。
2024-10-27 14:53:10 1049
原创 leetcode25 K个一组翻转链表 题解
有一个重要的点,就是大家要维护好整个链表的第一个节点,因为虽然题目给出了第一个节点的指针,但是在我们的骚操作之后,这个指针就会发生变化。我的操作是新建一个新的节点,然后让这个节点的 next 来保存第一个节点的信息,最后我们就只要返回这个节点的 next 就行了。假设用五个点表示链表的一部分,其中中间三个点是一组的,我们的第一步就是让他们内部的指向正确,具体的步骤是这样的,我们用三个指针 tmp、tmp1、tmp2 一步一步的完成操作。最后就是这样的了,中间的三个节点翻转,而且不影响其他的点。
2024-07-30 22:52:40 939
原创 leetcode135 分发糖果 题解
第一个 for 循环是判断哪些小朋友位于递增的子数列里,因为他右边的第一个和他不一样的值如果比他大的话,那么他所处的位置肯定就是递增的,但是一定要注意最后一个位置,即使他左边的值比他大,他也有可能只被分到一颗糖果,一会给大家举个例子。同理,第二个 for 循环是判断哪些小朋友处于递减的子数列里面,因为他左边的第一个跟他不一样的值如果比他大的话,就是处于递减的位置。但是这里有一个恶心的地方,就是如果两个挨着的小朋友rating值一样,分到的糖果谁多谁少都无所谓(感觉题面出的很不切实际[doge])。
2024-07-14 15:15:06 878
原创 leetcode1766 互质树 题解
早起一看今天的题吓我一跳,好家伙 “互质树” 听起来就是一个非常 diao 的题,题面看起来也非常 diao,但是看完数据范围就发现这题有点拉了。
2024-04-11 07:05:07 1901
原创 C和C++ 结构体 对齐方式 大小
首先第一个变量a占用四个字节,偏移量为0,然后第二个变量b偏移量是4,占用一个字节,在此之前不需要多余的填充,然后因为变量c是最后一个变量,所以直接占用一个字节,偏移量为5。因为大小已经是1的倍数了,所以最后也不需要填充字节。首先变量a作为第一个变量,相对于结构体的偏移量为0,占用一个字节,然后就是三个填充字节,这样使得变量b的偏移量为4(对齐长度)的倍数,最后就是变量c了,占用一个字节,但是为了使得整个结构体的大小同样为4的倍数,所以会在最后面再次添加三个填充字节,所以总共是12个字节。
2023-11-17 21:26:19 73
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人