数据结构
eeeeeeeeethan
这个作者很懒,什么都没留下…
展开
-
分治算法
分治法的思想许多算法的结构是递归的:为了解决一个给定的问题,算法一次或多次递归地调用自身以解决紧密相关的若干子问题。这些算法典型地遵循分治法的思想:将原问题分解为几个规模较小但类似于原问题的子问题,递归地求解这些子问题,然后合并这些子问题的解来建立原问题的解。分治模式在每层递归都有三个步骤:分解原问题为若干子问题,这些子问题是原问题规模较小的实例;解决这些子问题,递归地求解各子问题,当子...原创 2019-12-07 12:06:06 · 205 阅读 · 0 评论 -
滑动窗口相关概念和习题集
概念“滑动窗口”(sliding window)这一概念大概源自计算机网络,数据链路层的可靠传输对数据帧的传送进行流量控制和差错检验。发送方和接收方均维护一定大小的滑动窗口,对于发送方,只有在滑动窗口范围内的数据帧才可以发送;对于接收方,只有在滑动窗口范围内的数据帧才可以接受。根据双方滑动窗口的大小,又可以将滑动窗口协议分为停止等待协议、后退N帧协议、选择重传协议。1. 停止等待协议发送方、...原创 2019-12-01 00:26:57 · 1559 阅读 · 0 评论 -
蓄水池抽样算法
蓄水池抽样(Reservoir Sampling)是一种从数据流中随机选出若干个不重复数据的抽样方法。这个方法的特点是:数据流的长度很大且未知,不能将这些数据全部放进内存。数据只能被遍历一次而不能重复遍历。简单算法维护一个一个大小为k的蓄水池,最初包含数据流中前k个数据。然后遍历数据流的剩余数据。设数组索引从1开始,当遍历到第 i 个数据时,生成一个随机数字 j,随机数的范围为 1 ...原创 2019-11-20 23:22:48 · 325 阅读 · 0 评论 -
89.格雷编码
题目描述格雷编码是一个二进制数字系统,在该系统中,两个连续的数值仅有一个位数的差异。给定一个代表编码总位数的非负整数 n,打印其格雷编码序列。格雷编码序列必须以 0 开头。示例 1:输入: 2输出: [0,1,3,2]解释:00 - 001 - 111 - 310 - 2对于给定的 n,其格雷编码序列并不唯一。例如,[0,2,3,1] 也是一个有效的格雷编码序列。00 -...原创 2019-11-08 10:27:16 · 182 阅读 · 0 评论 -
广度优先搜索和深度优先搜索
定义广度优先搜索(Breadth-First Search)算法属于一种盲目搜寻法,目的是系统地展开并检查图中的所有节点,以找寻结果。换句话说,它并不考虑结果的可能位置,彻底地搜索整张图,直到找到结果为止。广度优先搜索一般需要队列的配合实现。典型的广度优先搜索例子有:拓扑排序、树的层序遍历。题目207. 课程表现在你总共有 n 门课需要选,记为 0 到 n-1。在选修某些课程之前需要一些...原创 2019-11-05 09:59:03 · 814 阅读 · 0 评论 -
792. 匹配子序列的单词数
给定字符串 S 和单词字典 words, 求 words[i] 中是 S 的子序列的单词个数。示例:输入:S = “abcde”words = [“a”, “bb”, “acd”, “ace”]输出: 3解释: 有三个是 S 的子序列的单词: “a”, “acd”, “ace”。注意:所有在words和 S 里的单词都只由小写字母组成。S 的长度在 [1, 50000]。wor...原创 2019-11-02 09:55:51 · 443 阅读 · 0 评论 -
105. 从前序与中序遍历序列构造二叉树的递归与非递归解法
根据一棵树的前序遍历与中序遍历构造二叉树。注意:你可以假设树中没有重复的元素。例如,给出前序遍历 preorder = [3,9,20,15,7]中序遍历 inorder = [9,3,15,20,7]题目分析根据前序遍历和中序遍历两个数组构造二叉树,观察可知,中序遍历的第一个结点为前序遍历中最左边的结点,故可以根据前序遍历一直构造左子树直到preorder[i]==inorder[...原创 2019-10-30 13:29:45 · 505 阅读 · 0 评论 -
669. 修剪二叉搜索树
题目描述给定一个二叉搜索树,同时给定最小边界L 和最大边界 R。通过修剪二叉搜索树,使得所有节点的值在[L, R]中 (R>=L) 。你可能需要改变树的根节点,所以结果应当返回修剪好的二叉搜索树的新的根节点。算法分析对于二叉搜索树的一个结点,它的左子树的所有结点的值均小于该结点的值,它的右子树的结点的值均大于该结点的值。故每当遇到一个结点:如果它的值大于右边界,则放弃根节点和右子树...原创 2019-11-01 11:51:31 · 148 阅读 · 0 评论