题目:给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 小的元素(从 1 开始计数)。 进阶:如果二叉搜索树经常被修改(插入/删除操作)并且你需要频繁地查找第 k 小的值,你将如何优化算法? 算法设计: 在二叉搜索树(BST)中,中序遍历可以按照从小到大的顺序 ...
题目:给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡 二叉搜索树。 平衡二叉搜索树(Balanced Binary Search Tree,常简称 BBST 或 AVL 树)的核心特点: 首先是:二叉搜索树 左子树所有节点值 < 根值 < 右子树所有节点值,中序遍 ...
1 简介 计算机设计的趋势及其对软件开发的影响。 Flynn 分类法 评估多核/并行性能、加速比和效率的基本工具。 测量和报告性能的正确实验程序。 阿姆达尔定律和古斯塔夫森-巴塞尔定律,并运用它们来预测并行程序的性能。 1.1 多核时代 自 20 世纪 80 年代以来,数字计算机一直是我们经历的许多 ...
题目:给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 算法思路: 用 Queue 存放当前层的节点。 每轮循环处理 一整层,把节点值收集到 List。 依次把左右子节点入队。 复杂度: 时间复杂度:O(n) —— 每个节点恰好访问一次 空间复杂度: ...
题目: 给你一棵二叉树的根节点,返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 算法思路: 直径 = 左子树最大深度 + 右子树最大深度(经过当前节点)。 对每个节点都算 ...
题目:给你一个二叉树的根节点 root , 检查它是否轴对称。 这个题的思路是,把「轴对称」转化为「两棵子树互为镜像」的问题: 递归比较:左子树的左孩子 vs 右子树的右孩子,左子树的右孩子 vs 右子树的左孩子。 迭代法:可用队列/栈每次成对弹出节点比较。 复杂度: 时间复杂度:O(n),每个节点 ...
题目:给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 对于中序遍历,两种最常用的方法是递归法和迭代法。下面分别给出这两种方法最简洁的 Java 实现,任选其一即可。 中序遍历顺序:左子树 → 根节点 → 右子树 递归法最直观,而迭代法用栈避免递归深度问题。 复杂度: 时间:O(n) ...
拓扑排序的结果序列反应了有向图中前顶点的前驱后继关系。所以,手算拓扑排序很简单,每次检查入度为0的顶点,删除从此顶点出发的边,将该顶点加入拓扑排序序列即可。 Kahn算法其实就是模拟这个过程,不过其核心的优化在于将采用BSF的方式来进行,同时维护一个入度数组,每次加入一个顶点就更新入度数组,并且若入 ...
深入剖析 LRU 缓存机制的核心实现,本文巧妙融合双向链表与哈希表,解锁时间复杂度为 O (1) 的高效缓存管理。从数据结构选择到代码实现,多方面解读 LRU 缓存的设计原理及其高效性。 ...
本文使用了三种排序方法——归并排序、快速排序、计数排序,解决对于升序排序链表的算法问题,详细介绍了三种方法的算法步骤及代码实现、复杂度分析。其中归并排序算法的空间复杂度为 O (1),时间复杂度为 O (n log n),实现了算法优化。 ...
平衡树\(Splay\) 前言 个人见解不代表我讲的一定正确,请参考其它文献阅读 (就当我瞎扯淡就行) 前置知识 二叉搜索树 简单叙述一下,具体操作请转至其它博客或oi.wiki 二叉搜索树,也称也称二叉排序树或二叉查找树,是一种基于二叉树的树形结构,满足该树为二叉树且中序遍历有序的性质 简单解释一 ...
本文发布于博客园,会跟随补题进度实时更新,若您在其他平台阅读到此文,请前往博客园获取更好的阅读体验。 跳转链接:https://www.cnblogs.com/TianTianChaoFangDe/p/18995014 开题情况 7.15牛客多校1 : 4题 - EGKL 7.17牛客多校2 : 5 ...
目录 目录目录队列的概念假溢出问题循环队列的实现1.以数组为基础实现循环队列2.以链表为基础实现循环队列两个栈实现队列 队列的概念 队列(Queue)和栈类似,相同点是都属于线性结构,不同点是栈遵循“后进先出”原则,而队列遵循“先进先出”的原则,也被称为“FIFO”结构,就是“First Input ...
动态规划 背景: 从递归到记忆化搜索再到动态规划: 递归思路: 方法论 方法一:循序渐进 通过引入动态规划的逻辑,来解决动态规划的问题:首先从递归出发,写出递归表达式,根据递归表达式,得到记忆化搜索,再有记忆化搜索翻译为递归(去掉递归中的递的过程)(结合198.打家劫舍来理解): dfs(i,j) ...
[USACO16JAN] Subsequences Summing to Sevens S https://www.luogu.com.cn/problem/P3131 方法 1: 暴力枚举端点并求和时间复杂度 \(50000^3\) 会 TLE 方法 2: 暴力枚举端点并前缀和优化时间复杂度 \( ...
题目 通过键盘输入一个包括 '(' 和 ')' 的字符串string ,判断字符串是否有效。要求设计算法实现检查字符串是否有效,有效的字符串需满足以下条件: A. 左括号必须用相同类型的右括号闭合。 B. 左括号必须以正确的顺序闭合。 C. 每个右括号都有一个对应的相同类型的左括号。 题目分析 使用 ...
回溯算法 背景 电话号码的字母组合: 暴力循环枚举: for(i in "abc") for(j in "def") 组合; 可以得到有3*3=9种。 问题:如果构成的字符串长度为3或长度为一个参数n呢? 可以看出,单纯的循环”表达能力有限“,再举一个简单例子: {1,2,3,4}两两组合有多少种组 ...
设计一个进制转换程序,使用顺序栈设计一个把十进制数转换为十六进制数的接口,实现当通过键盘输入一个非负的十进制数,可以在终端输出对应的十六进制数。 ...
【字节跳动高频面试题】不超过 N 的最大数拼接 ✨ 题目描述 给定一个按 非递减顺序 排列的数字字符数组 digits(如 ["1","3","5","7"]),你可以任意次数使用这些字符,拼接成一个正整数。 请返回:所有能拼出且 ≤ 给定整数 n 的正整数中,值最大的那个。 示例 输入: ...
又是战犯的一周啊。 再见宣言真好听。 A.Content Too Large translation: 判断是否有 \(\sum_{i=1}^n A_i\le M\)。 无脑题,不给代码了。赛时除了手速有点慢以外没啥别的问题。 B.cat 2 translation: 给定 \(n\) 个字符串 \ ...