跳至主要內容
滑动窗口

模板

所谓滑动窗口,就是不断的调节子序列的起始位置和终止位置,从而得出我们要想的结果。
滑动窗口也可以理解为双指针法的一种!只不过这种解法更像是一个窗口的移动
窗口内是什么?
如何移动窗口的起始位置?
如何移动窗口的结束位置?
解题的关键在于 窗口的起始位置如何移动
//外层循环扩展右边界,内层循环扩展左边界
for (int l = 0, r = 0 ; r < n ; r++) {
	//当前考虑的元素
	while (l <= r && check()) {//区间[left,right]不符合题意
        //扩展左边界
    }
    //区间[left,right]符合题意,统计相关信息
}

HeChuangJun大约 4 分钟面试二叉平衡树
二叉平衡树

二叉搜索/排序树BST及实现

  • 对于每个节点 N,其左子树的所有节点的值都小于 N 的值,右子树的所有节点的值都大于 N 的值。
  • 查找操作:从根节点开始,如果要查找的值小于当前节点的值,则进入左子树;如果大于当前节点的值,则进入右子树;如果等于当前节点的值,则找到该值。
    时间复杂度平均为O(log n),最坏情况下为O(n)(当树退化为链表时)。
  • 插入操作:从根节点开始,依次比较键值,将新节点插入到合适的位置,以保持树的性质。时间复杂度平均为O(log n),最坏情况下为O(n)。
  • 删除操作:分为三种情况:删除叶节点、删除只有一个子节点的节点、删除有两个子节点的节点。删除有两个子节点的节点时,需要找到其前驱或后继节点来替代它的位置。
    时间复杂度平均为O(log n),最坏情况下为O(n)。
  • 中序遍历(In-order Traversal):得到的节点序列是递增排序的
  • 前序遍历(Pre-order Traversal)和后序遍历(Post-order Traversal):用于特定的树操作和应用场景。

HeChuangJun大约 12 分钟面试二叉平衡树