随笔分类 - 数据结构
摘要:一直以来对KMP算法理解的不是很透彻。看了左神的程序员代码面试指南后感觉基本明白了。我们都知道KMP算法最重要的是next数组,next[i]的含义是在match[i]之前的字符串match[0..i-1]中,必须以match[i-1]结尾的后缀子串(不能包含matc...
阅读全文
摘要:写一个函数,求两个整数之和,要求在函数体内不得使用+、-、*、/四则运算符号。分析:肯定用位运算,模拟加法时首先将各位相加不进位,然后再算进位,最后相加。例如5+17=22,首先各位相加得到12,然后算进位得到10,再相加得到22.各位相加不进位用异或计算,算进位先用...
阅读全文
摘要:题目:输入一棵二叉搜索树,将该二叉搜索树转换成一个排序的双向链表要求排序可以想到中序遍历,把根节点的左右子树都转换成排序好的双向链表,再将根节点左子树的最大值,右子树的最小值与根节点相连。class Solution {public: TreeNode* Con...
阅读全文
摘要:最大深度class Solution {public: int TreeDepth(TreeNode* pRoot) { if(pRoot==NULL) return 0; int l=TreeDepth(pRo...
阅读全文
摘要:中序遍历中根节点前的节点为左子树,根节点后的节点为右子树。class Soultion{public: struct TreeNode* reConstructBinaryTree(vector pre,vector in) { int inlen=in....
阅读全文
摘要:选择和快速排序为不稳定排序,其它为稳定排序。插入排序:将数据分为有序部分和待排序部分,每次将待排序部分的第一个元素在有序部分中找到插入的位置,并将其插入。for(int i=0;i=0;j--){ if(data[j]>data[j+1]...
阅读全文
摘要:两个栈stack1,stack2,入队时压入stack1,出队时将stack1中的元素弹出压入stack2中,此时元素恢复原来顺序,将stack2栈顶弹出,完成出队(当stack2不为空时直接弹出stack2栈顶元素)。class Solution{public: ...
阅读全文
摘要:首先统计每个字母在字符串里出现的频率,我们把每个字母看成一个结点,结点的权值即是字母出现的频率,我们把每个结点看成一棵只有根结点的二叉树,一开始把所有二叉树都放在一个集合里。接下来开始如下编码:步骤一:从集合里取出两个根结点权值最小的树 a 和 b,构造出一棵新的二叉...
阅读全文
摘要:从小到大排序,建立大根堆,每次将最后一个元素与堆顶交换,此时最大元素到堆尾,堆元素-1,自上而下维护大根堆,得到的数组即从小到大#includeusing namespace std;class Heap {private: int *data, size;pu...
阅读全文
摘要:题目:地上从左到右竖立着 n 块木板,从 1 到 n 依次编号,如下图所示。我们知道每块木板的高度,在第 n 块木板右侧竖立着一块高度无限大的木板,现对每块木板依次做如下的操作:对于第 i 块木板,我们从其右侧开始倒水,直到水的高度等于第 i 块木板的高度,倒入的水会...
阅读全文
摘要:题目:有一个链表,我们需要判断链表中是否存在环。有环则输出true,否则输出false。输入有多行,每行为由空格分隔的两个整数m和n,m是当前结点的数据,n代表当前结点的指针域指向第n个结点。n存在四种情形:①为-1,代表该结点的指针域指向NULL,输入结束;②指向该...
阅读全文
摘要:题目:给定一个固定的单链表,输入两个数begin和end。将下标为begin到end之间的内容逆置。给定的单链表为:0->2->4->6->8->10->12->14->16->18测试数据确保begin和end不会超出单链表的长度范围,并且end>=begin样例输...
阅读全文
摘要:大意:求所有逆序数对的和分析:对于数a,他的逆序数对之和为:逆序对数*a+a之前比a大的数。开两个树状数组,一个求逆序对数,一个求和。代码:#include #include #include #include #define MAXN 100001using nam...
阅读全文
摘要:大意:求逆序数分析:数据较小,可以用树状数组。数据大则用归并。用树状数组求逆序数时,数组tree代表数字x是否在序列中出现过,如果数字x已经存在于序列中,则tree[x]=1,否则tree[x]=0,此时query(x)返回值为在序列中比数字x小的元素的个数,如果序列...
阅读全文
摘要:题目:Problem DescriptionN个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a #include #include #include using namespace std;#define MAXN 100005int...
阅读全文

浙公网安备 33010602011771号