随笔分类 - 数据结构与算法
data structure and algorithm analysis and design
摘要:一、快排基础 1.1 快排的流程 将数组A进行快速排序的基本步骤-quick_sort(A): 递归基础情况:如果A中的元素个数是1或0,则返回。 选取主元:取A中的任意一个元素v,作为主元(pivot)。 交换策略:将A-{v}即A中剩余元素,划分成两个不相交的集合(多重集)A1和A2, 递归处理
阅读全文
摘要:一、堆的基础 1.1 优先队列和堆 优先队列(Priority Queue):特殊的“队列”,取出元素顺序是按元素优先权(关键字)大小,而非元素进入队列的先后顺序。 若采用数组或链表直接实现优先队列,代价高。依靠数组,基于完全二叉树结构实现优先队列,即堆效率更高。一般来说堆代指二叉堆。 优先队列的完
阅读全文
摘要:一、题目 给你一个二叉树的根节点 root。设根节点位于二叉树的第1层,而根节点的子节点位于第2层,依此类推。 请返回层内元素之和 最大 的那几层(可能只有一层)的层号,并返回其中 最小 的那个。 示例 1: 输入:root = [1,7,0,7,-8,null,null] 输出:2 解释: 第 1
阅读全文
摘要:一、题目 给你两个非空的链表,表示两个非负的整数。它们每位数字都是按照逆序的方式存储的,并且每个节点只能存储一 数字。请你将两个数相加,并以相同形式返回一个表示和的链表。 可以假设除了数字 0 之外,这两个数都不会以 0 开头。 示例 1: 输入:l1 = [2,4,3], l2 = [5,6,4]
阅读全文
摘要:一、题目 英语中有一个叫做词根(root)的概念,我们可在词根后面添加其他一些词,组成另一个较长的单词——即继承词(successor)。例如,词根an跟随着单词other,可以形成新的单词another。 现给定一个由许多词根组成的词典dictionary和一个用空格分隔单词形成的句子senten
阅读全文
摘要:一、题目 Trie树(前缀树)是一种树形数据结构(多叉树),它可用于高效地存储和检索字符串数据集中的键。这一数据结构有相当多的应用情景,例如自动补完和拼写检查。 请你实现 Trie 类: Trie() 初始化前缀树对象。 void insert(String word) 向前缀树中插入字符串 wor
阅读全文
摘要:一、题目 给定一个长度为 n 的整数数组 height 。有 n 条垂线,第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线,使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量(不能倾斜容器)。 示例 1: 输入:[1,8,6,
阅读全文
摘要:无向图单源最短路径,Dijkstra算法
阅读全文
摘要:循环队列和公式法求解约瑟夫问题
阅读全文
摘要:Binary Search Tree的基本操作,例如插入,删除, 查找,遍历
阅读全文