数据结构(二)学习笔记

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函数

食物链:

 同时还需要考虑不在一个集合内的情况

 

三种情况

 

 

写在文末:随口说一句,程序人,眼睛很累,多看看绿色,多望远,没事多插眼,休息多闭目养神~

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

irrationality

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值