数据结构(二)学习笔记
trie树是一个非常非常简单的数据结构
26个字母,所以是son26
并查集思路精巧,代码简短,是常见的面试题目,
熟练掌握
路径压缩优化
基本的并查集
建议scanf用%s读取字符串的形式,过滤空格和回车 op[2]
有的出题人就很奇怪,会在莫名其妙的地方加上‘ ’空格 血淋淋的教训……
但是当你深刻地理解了代码之后,你就会觉得他们非常简单
并查集变型题:食物链——注意维护到根节点的距离
堆:每个点都比左右两边小
一维数组存储堆 ↑
然后是down操作:
与当前的最小值交换6、3、4->3
继而3、6、5把3交换
同理:
我们看下面的up操作
比父结点小,就把它换上去
注意下标从1开始会比较方便 因为0的两倍是它的左儿子,结果还是0
down
如果要考虑这是第几次的输入的堆,那么还要设计指针数组ph和hp
ph通过第几次输入来找结点,结点通过hp来找下标(几率为第几次输入)
表示op==“I”,这样strcmp返回0
异或运算
xor同0异1
最大异或对 暴力法
限制j<i,因为a1与a5和a5与a1是一样的结果
优化:可以用串树
再次深入理解:高位越大,整个数越大,高位不及他,一定比他小
同时,利用异或的性质去和他匹配
直接找分支:若无支路,那么只有一条路可走也要走 ,若有支路,那么选择与之不同的,让xor为1
先查找,在插入,查找能够异或最大的,然后存到res,然后把这个数插入,反复利用,之后再用max函数
食物链:
同时还需要考虑不在一个集合内的情况
三种情况
写在文末:随口说一句,程序人,眼睛很累,多看看绿色,多望远,没事多插眼,休息多闭目养神~
文章来源: blog.csdn.net,作者:irrationality,版权归原作者所有,如需转载,请联系作者。
原文链接:blog.csdn.net/weixin_54227557/article/details/120684926
- 点赞
- 收藏
- 关注作者
评论(0)