前缀树和贪心算法

前缀树的作用:查找有没有加入过该字符串的时间复杂度是字符串的长度(hash表也可以做到)。可以查找加入过的字符串有多少是使用"ab"作为前缀的。(hash表做不到)
 

 前缀树的节点设计

nexts当有很多路时,可以采用hash表的方式存储路,key代表某一条路,value的Node代表走到哪一个节点上去

 

 

 

 

 JVM会把找不到的节点内存自动释放掉。而c++释放内存资源是由自己维护的,如果是c++代码需要自己释放后续节点

 

 

 

 

 

对一个字符串类型的数组进行拼接,要求拼接后的字符串字典序最小。

贪心策略1:先对数组进行字典序的排序,然后从小到大依次拼接。这种方法不行如"b","ba"。"b"的字典序小于"ba",拼接后"bba"字典序大于"bab" 。反例证明不行。

贪心策略2:对两个字符串进行比较:先对两个字符串进行拼接,如果谁拼接到前的字典序更小,就把谁放在前面

 

证明我们的排序策略是有传递性的:

abc乘以k进制的平方,就代表该数向左移动两位

 

 

 

 证明贪心策略可行性

 数学归纳法证明中间隔了三个、四个。。个数交换。会增大字典序

 

 

 哈夫曼树编码问题:先把数放入小根堆中去,然后依次遍历结合。

哈夫曼树编码是求总编码长度最小的问题。也就是每个根节点权值最小问题。和该问题等价

贪心策略  堆和排序是最常用的两个策略

 

 

 我的思路:应该使用利润比上成本 就是每一块钱能获得多少利润。这种方式进行贪心(不太对)

 

左神思路:每次做这个项目都选在资金范围内,挣得最多的

 

 

 

 和贪心无关的题目

 

 最后得到的两个堆就是所有数的N/2,偶数的中位数是(4+5)/ 2。

 

 

 ​​​​​​​

 

 

 n皇后问题,最低指标也是n的阶乘级别。但是可以进行常数时间的优化

 

 使用位运算进行常数时间的优化。

n皇后问题中的n是多少,就在二进制数中生成多少个1.limit的值不代表任何信息。重点使用他的位

 

 没听懂。到时候再听一遍

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值