数据结构
liuxiaokai_liu
这个作者很懒,什么都没留下…
展开
-
深入理解红黑树
、//本文中的图片来自于http://www.cnblogs.com/yangecnu/p/Introduce-Red-Black-Tree.html什么是红黑树? 红黑树首先是一棵平衡二叉搜索树,与AVL树不同的是,红黑树的每个节点都有颜色,要么黑,要么红。概括就是以下几点: 1,红黑树是一个近似平衡的二叉搜索树 2,红黑树每个节点都有颜色 ...原创 2018-05-10 11:11:13 · 255 阅读 · 0 评论 -
map_set的使用
map和set是红黑树的一层封装。不熟悉红黑树的请看上篇文章。map的增删查改操作 代码示例:#include <iostream>#include <map>#include <string>using namespace std;int main(){ map<string, string> m; //ma...原创 2018-05-11 17:45:11 · 199 阅读 · 0 评论 -
基于哈夫曼树的文件压缩
基本思想: 压缩: 1、统计出文件中相同字符出现的次数 2、获取哈夫曼编码 次数作为权值构建哈夫曼树 3、重新编码,写回压缩文件 保存头文件: 源文件后缀 编码信息的行数 每个字符的权 保存编码解压缩: 1、获取原文件后缀 2、获取每个字符出现的次数,即权值 3、利用之前后的的权值,还原哈夫曼树 4、找到对应的叶子节点,将信息保存到解压文件...原创 2018-07-13 16:21:59 · 468 阅读 · 0 评论 -
剑指offer面试题22:栈的压入弹出序列
输入两个整数序列,第一个序列表示栈的压入顺序,请判断第二个序列是否可能为该栈的弹出顺序。假设压入栈的所有数字均不相等。例如序列1,2,3,4,5是某栈的压入顺序,序列4,5,3,2,1是该压栈序列对应的一个弹出序列,但4,3,5,1,2就不可能是该压栈序列的弹出序列。(注意:这两个序列的长度是相等的)栈是先进后出的结构,所以出栈顺序一定是有规则的;下面来分析一下借助一个辅助栈,按照压入序列...原创 2018-08-12 21:14:48 · 142 阅读 · 0 评论 -
剑指offer:数组中出现次数超过数组长度一半的数。
题目描述: 数组中有一个数字出现的次数超过数组长度的一半,请找出这个数字。例如输入一个长度为9的数组{1,2,3,2,2,2,5,4,2}。由于数字2在数组中出现了5次,超过数组长度的一半,因此输出2。如果不存在则输出0。题目分析: 这个题和统计字符串中出现了n次的字符的题,思路是相同的,统计出数字出现的次数,然后和数组大小的一半比较就可以。 我使用了一个map将...原创 2018-08-19 19:01:57 · 172 阅读 · 0 评论 -
从尾到头打印链表
/** * struct ListNode { * int val; * struct ListNode *next; * ListNode(int x) : * val(x), next(NULL) { * } * }; */ 将所有数据装入栈中即可,也可以用三指针法 class Solut...原创 2018-09-05 15:56:08 · 138 阅读 · 0 评论 -
两个栈实现队列
class Solution { public: void push(int node) { stack1.push(node); }int pop(){ if(stack2.size()<=0) { while(!stack1.empty()) { int data = stack1...原创 2018-09-05 15:56:56 · 120 阅读 · 0 评论 -
旋转数组最小数字
排序之后输出最小的#include <algorithm>class Solution {public: int minNumberInRotateArray(vector<int> rotateArray) { if(rotateArray.size()==0) { return 0; ...原创 2018-09-05 16:08:06 · 116 阅读 · 0 评论