刷新
【LeetCode 230】算法:二叉搜索树中第 K 小的元素

博主头像 题目:给定一个二叉搜索树的根节点 root ,和一个整数 k ,请你设计一个算法查找其中第 k 小的元素(从 1 开始计数)。 进阶:如果二叉搜索树经常被修改(插入/删除操作)并且你需要频繁地查找第 k 小的值,你将如何优化算法? 算法设计: 在二叉搜索树(BST)中,中序遍历可以按照从小到大的顺序 ...

【LeetCode 108】算法:将有序数组转换为二叉搜索树

博主头像 题目:给你一个整数数组 nums ,其中元素已经按 升序 排列,请你将其转换为一棵 平衡 二叉搜索树。 平衡二叉搜索树(Balanced Binary Search Tree,常简称 BBST 或 AVL 树)的核心特点: 首先是:二叉搜索树 左子树所有节点值 < 根值 < 右子树所有节点值,中序遍 ...

多核及GPU程序设计1简介

1 简介 计算机设计的趋势及其对软件开发的影响。 Flynn 分类法 评估多核/并行性能、加速比和效率的基本工具。 测量和报告性能的正确实验程序。 阿姆达尔定律和古斯塔夫森-巴塞尔定律,并运用它们来预测并行程序的性能。 1.1 多核时代 自 20 世纪 80 年代以来,数字计算机一直是我们经历的许多 ...

【LeetCode 102】算法:二叉树的层序遍历

博主头像 题目:给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 算法思路: 用 Queue 存放当前层的节点。 每轮循环处理 一整层,把节点值收集到 List。 依次把左右子节点入队。 复杂度: 时间复杂度:O(n) —— 每个节点恰好访问一次 空间复杂度: ...

【LeetCode 543】算法:二叉树的直径

博主头像 题目: 给你一棵二叉树的根节点,返回该树的 直径 。 二叉树的 直径 是指树中任意两个节点之间最长路径的 长度 。这条路径可能经过也可能不经过根节点 root 。 两节点之间路径的 长度 由它们之间边数表示。 算法思路: 直径 = 左子树最大深度 + 右子树最大深度(经过当前节点)。 对每个节点都算 ...

给定二叉树的根节点 root,判断它是否 轴对称(镜像对称)

博主头像 题目:给你一个二叉树的根节点 root , 检查它是否轴对称。 这个题的思路是,把「轴对称」转化为「两棵子树互为镜像」的问题: 递归比较:左子树的左孩子 vs 右子树的右孩子,左子树的右孩子 vs 右子树的左孩子。 迭代法:可用队列/栈每次成对弹出节点比较。 复杂度: 时间复杂度:O(n),每个节点 ...

二叉树的中序遍历:递归法和迭代法

博主头像 题目:给定一个二叉树的根节点 root ,返回 它的 中序 遍历 。 对于中序遍历,两种最常用的方法是递归法和迭代法。下面分别给出这两种方法最简洁的 Java 实现,任选其一即可。 中序遍历顺序:左子树 → 根节点 → 右子树 递归法最直观,而迭代法用栈避免递归深度问题。 复杂度: 时间:O(n) ...

浅谈拓扑排序与Kahn算法

博主头像 拓扑排序的结果序列反应了有向图中前顶点的前驱后继关系。所以,手算拓扑排序很简单,每次检查入度为0的顶点,删除从此顶点出发的边,将该顶点加入拓扑排序序列即可。 Kahn算法其实就是模拟这个过程,不过其核心的优化在于将采用BSF的方式来进行,同时维护一个入度数组,每次加入一个顶点就更新入度数组,并且若入 ...

平衡树Splay

博主头像 平衡树\(Splay\) 前言 个人见解不代表我讲的一定正确,请参考其它文献阅读 (就当我瞎扯淡就行) 前置知识 二叉搜索树 简单叙述一下,具体操作请转至其它博客或oi.wiki 二叉搜索树,也称也称二叉排序树或二叉查找树,是一种基于二叉树的树形结构,满足该树为二叉树且中序遍历有序的性质 简单解释一 ...

循环队列的接口

博主头像 目录 目录目录队列的概念假溢出问题循环队列的实现1.以数组为基础实现循环队列2.以链表为基础实现循环队列两个栈实现队列 队列的概念 队列(Queue)和栈类似,相同点是都属于线性结构,不同点是栈遵循“后进先出”原则,而队列遵循“先进先出”的原则,也被称为“FIFO”结构,就是“First Input ...

动态规划

博主头像 动态规划 背景: 从递归到记忆化搜索再到动态规划: 递归思路: 方法论 方法一:循序渐进 通过引入动态规划的逻辑,来解决动态规划的问题:首先从递归出发,写出递归表达式,根据递归表达式,得到记忆化搜索,再有记忆化搜索翻译为递归(去掉递归中的递的过程)(结合198.打家劫舍来理解): dfs(i,j) ...

笔试题-通过键盘输入一个包括 '(' 和 ')' 的字符串string ,判断字符串是否有效

博主头像 题目 通过键盘输入一个包括 '(' 和 ')' 的字符串string ,判断字符串是否有效。要求设计算法实现检查字符串是否有效,有效的字符串需满足以下条件: A. 左括号必须用相同类型的右括号闭合。 B. 左括号必须以正确的顺序闭合。 C. 每个右括号都有一个对应的相同类型的左括号。 题目分析 使用 ...

回溯算法

博主头像 回溯算法 背景 电话号码的字母组合: 暴力循环枚举: for(i in "abc") for(j in "def") 组合; 可以得到有3*3=9种。 问题:如果构成的字符串长度为3或长度为一个参数n呢? 可以看出,单纯的循环”表达能力有限“,再举一个简单例子: {1,2,3,4}两两组合有多少种组 ...

笔试题-十进制转十六进制

博主头像 设计一个进制转换程序,使用顺序栈设计一个把十进制数转换为十六进制数的接口,实现当通过键盘输入一个非负的十进制数,可以在终端输出对应的十六进制数。 ...

【字节跳动高频面试题】不超过 N 的最大数拼接

博主头像 【字节跳动高频面试题】不超过 N 的最大数拼接 ✨ 题目描述 给定一个按 非递减顺序 排列的数字字符数组 digits(如 ["1","3","5","7"]),你可以任意次数使用这些字符,拼接成一个正整数。 请返回:所有能拼出且 ≤ 给定整数 n 的正整数中,值最大的那个。 示例 输入: ...

AT_abc413

博主头像 又是战犯的一周啊。 再见宣言真好听。 A.Content Too Large translation: 判断是否有 \(\sum_{i=1}^n A_i\le M\)。 无脑题,不给代码了。赛时除了手速有点慢以外没啥别的问题。 B.cat 2 translation: 给定 \(n\) 个字符串 \ ...

<1···345···15>