更复杂的选项是TokenWindowChatMemory, 它也作为滑动窗口运行,但专注于保留最近的N个令牌, 根据需要淘汰旧消息。 消息是不可分割的。如果一条消息不适合,它会被完全淘汰。 TokenWindowChatMemory需要一个Tokenizer来计算每个ChatMessage中的令牌数。
也就是按照重要性进行排名, 然后选出最不重要的信息
更复杂的选项是TokenWindowChatMemory, 它也作为滑动窗口运行,但专注于保留最近的N个令牌, 根据需要淘汰旧消息。 消息是不可分割的。如果一条消息不适合,它会被完全淘汰。 TokenWindowChatMemory需要一个Tokenizer来计算每个ChatMessage中的令牌数。
也就是按照重要性进行排名, 然后选出最不重要的信息
DFS 算法常用来穷举所有路径,BFS 算法常用来寻找最短路径
应用
q.offer(new State(cur.node.left, cur.depth + 1));
这里是按照深度+1来计算权重 如果每个树枝的权重不同, 就加上树枝的权重
最后一个知识点,二叉搜索树(BST) 的中序遍历结果是有序的,这是 BST 的一个重要性质。
因为数的左边都是比根节点小的值 ,所以中序遍历,就是按从小到大排序了
newNode.prev = cur;
多了一条这个
// 输入一个数组,转换为一条单链表
字节的面试题 中的一部分 ,自己将给出的链表输入进去
然后才进行算法解题
这些空隙都是合法的插入位置,
比如插入到 索引位置, 所以这里checkElementIndex 是检测是否是一个存在的元素 checkPositionIndex检测是否是一个可插入的位置
查找
有数数组的查找问题用二分法
删除重复元素,实际上就是将不重复的元素移到数组左侧。
反过来思考 就变得很简单了, 我是废物
双指针利用了区间「单调性」的性质,可以将时间复杂度降到 O(n)O(n)O(n)。
也就是说只能在有序的情况下使用该方法
用检视阅读的方法
<<如何阅读一本书>>里的方法
碎片化学习不靠谱,但碎片化知识很重要。所以我们要用碎片化时间收集碎片化知识,再用整块时间将这些碎片化知识整合进自己的知识体系中,将碎片化知识变成体系化知识。
所以处理的办法是不要用碎片化时间来学习,而是用碎片化时间来收集碎片化知识
核心在于一定要有一个优秀的知识体系,第二个就是要有碎片化重复的机会,在应用中重复了。所以经过重复和运用,才能真正地把知识体系落到实处。
搭建体系, 运用体系把知识沉淀下来
真正的知识,想要运用起来,首先一定要记住,必须要记在脑子里,否则是用不起来的。那么知识就是记在脑子里的信息。
颠覆了理科不需要记忆的想法,非常赞同