关闭

linux free命令详解: cache和buff的区别

Linux系统上,常用free命令查看内存的使用情况,本文主要为你介绍free命令的输出结果: 解释一下linux上free命令的输出。   下面是free的运行结果,一共有4行。为了方便说明,我加上了列号。这样可以把free的输出看成一个二维数组FO(Free Output)。例如: FO[2][1] = 24677460FO[3][2] = 10321516      ...
阅读(192) 评论(0)

智能指针shared_ptr引用计数工作原理

引用计数原理 shared_ptr的实现是这样的:  shared_ptr模板类有一个__shared_count类型的成员_M_refcount来处理引用计数的问题。__shared_count也是一个模板类,它的内部有一个指向Sp_counted_base_impl类型的指针_M_pi。所有引用同一个对象的shared_ptr都共用一个_M_pi指针。 指向相同资源的所有 ...
阅读(98) 评论(0)

day25之布隆过滤器的实现和优缺点以及扩展

布隆过滤器(Bloom Filter)是1970年由布隆提出的。它实际上是一个很长的二进制向量和一系列随机映射函数。布隆过滤器可以用于检索一个元素是否在一个集合中。它的优点是空间效率和查询时间都远远超过一般的算法,缺点是有一定的误识别率和删除困难。代码实现://bitMap.h 布隆过滤器存在是准确的还是不存在是准确的? 2:布隆过滤器优缺点? 3:如何扩展BloomFilter使得它支持删除元素的操作?请设...
阅读(73) 评论(0)

day26之模拟实现memcpy和memmove函数

【基础题】--模拟实现C库的memcpy和memmove。 2.【附加题】--给两个文件,分别有100亿个URL,我们只有1G内存,如何找到两个文件交集?分别给出精确算法和近似算法。(设计出解决方案)...
阅读(65) 评论(0)

day24之位图的实现和位图的应用

定义位图法就是bitmap的缩写。所谓bitmap,就是用每一位来存放某种状态,适用于大规模数据,但数据状态又不是很多的情况。通常是用来判断某个数据存不存在的。例如,要判断一千万个人的状态,每个人只有两种状态:男人,女人,可以用0,1表示。那么就可以开一个int数组,一个int有32个位,就可以表示32个人。操作的时候可以使用位操作。 位图实现unsigned int bit[N];在这个数组里面...
阅读(68) 评论(0)

day23之数组循环右移k位+去除重复的字符。

将N个字符的数组,循环右移K位。时间复杂度O(N)。 #include using namespace std; #include #includevoid Reverse(char *array, int left, int right) { while(left < right) { swap(array[...
阅读(85) 评论(0)

排序算法三归并排序

归并排序(MERGE-SORT)是利用归并的思想实现的排序方法,该算法采用经典的分治(divide-and-conquer)策略(分治法将问题分(divide)成一些小的问题然后递归求解,而治(conquer)的阶段则将分的阶段得到的各答案”修补”在一起,即分而治之)。递归代码实现:void Merge(int array[], int *temp, int left, int mid, int r...
阅读(49) 评论(0)

day21桶排序一个无序数组+求一个无序数组中的中位数

int a[] = {12,13,12,13,19,18,15,12,15,16,17},要求对数组a进行排序,要求时间复杂度为O(N) void BucketSort(int array[], int size) { assert(array && size > 0); int max = array[0]; int min = array[0]; for(int i...
阅读(49) 评论(0)

day19之找出最喜欢吃的前k种水果(数组中次数出现最多的前k个数)

本公司现在要给公司员工发波福利,在员工工作时间会提供大量的水果供员工补充营养。由于水果种类比较多,但是却又不知道哪种水果比较受欢迎,然后公司就让每个员工报告了自己最爱吃的k种水果,并且告知已经将所有员工喜欢吃的水果存储于一个数组中。然后让我们统计出所有水果出现的次数,并且求出大家最喜欢吃的前k种水果。 分析:一看这题就是典型的求数组中出现次数最多的前k个数, 首先我们应该用哈希表或map先统计元素...
阅读(151) 评论(0)

排序算法二冒泡排序和快排

冒泡排序想必大家都非常熟悉了,这里就直接贴代码了void BubbleSort(int 快排的三种写法四种优化 快排的非递归 尾部递归...
阅读(63) 评论(0)

day18之用shell脚本实现一个希尔排序

#!/bin/bashfunction ShellSort() { echo "输入数组的长度" read size for((i=0; i<size; ++i)) do echo "输入第$((i+1))个元素" read array[i] done echo "${array[@]}" #array=(34 87...
阅读(75) 评论(0)

排序一之插入排序和希尔排序

1.插入排序 插入排序(Insertion Sort)是一种简单直观的排序算法。它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,通常采用in-place排序(即只需用到O(1)的额外空间的排序),因而在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。 算法描述: 1.从第一个元素开始,该元素...
阅读(53) 评论(0)

day17之将二叉搜索树转换成一个排序的双向链表

题目: 输入一棵二叉搜索树,将该二叉搜索树转换为一个排序的双向链表。要求不能创建任何新的节点,只能调整树中指针的指向。 分析与解法: 1、由于要求链表是有序的,可以借助二叉树中序遍历,因为中序遍历算法的特点就是从小到大访问结点。当遍历访问到根结点时,假设根结点的左侧已经处理好,只需将根结点与上次访问的最近结点(左子树中最大值结点)的指针连接好即可。进而更新当前链表的最后一个结点指针。...
阅读(103) 评论(0)

C语言模拟实现C++继承和多态

-C语言模式实现C++继承和多态 C++中的多态我们知道的是在C++中会维护一张虚函数表,根据赋值兼容规则,我们知道父类的指针或者引用是可以指向子类对象的。如果一个父类的指针或者引用指向父类的对象,会调用父类的函数,如果该父类对象的指针或者引用指向的是子类的对象,而且该子类已经重写了父类的虚函数,则该指针会调用子类的已经重写的虚函数。//c++中的多态class A {...
阅读(62) 评论(0)

day16剑指offer---重建二叉树

题目:输入某二叉树的前序遍历和中序遍历的结果,请重建该二叉树。假设输出的前序遍历和中序遍历的结果都不含有重复的数字。前序序列:1 2 3 4 5 6 - 中序序列:3 2 4 1 6 5二叉树节点的定义如下:struct TreeNode { int val; TreeNode *left; TreeNode *right; TreeN...
阅读(62) 评论(0)

day15之求二叉树中两个节点的最近公共祖先

求二叉树两个节点的最近公共祖先: 1:二叉树每个节点有parent(三叉链) 2:二叉树是搜索二叉树。 3:就是普通二叉树。(尽可能实现时间复杂度为O(N))...
阅读(130) 评论(0)

day15之判断一棵树是不是完全二叉树

1.完全二叉树的定义? 判断一棵树是否是完全二叉树,首先要知道什仫是完全二叉树?完全二叉树就是除最后一层外,每一层上的结点数均达到最大值;在最后一层上只缺少右边的若干结点。 2、如何判断一棵树是完全二叉树? 两种判断完全二叉树的方法: 1)标记法: 设置标记flag=false,如上图所示,从根结点开始层序遍历入队列,如果队列不为空,一直循环。遇到第一个没有左孩子或者右孩子的结点,设...
阅读(77) 评论(0)

day14之判断一个节点是否在一棵二叉树中+判断一颗二叉树是是否是另一颗树的子树

判断一个节点是否在一棵二叉树中 struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } }; 判断一棵树是不是另一颗树的子树。...
阅读(459) 评论(0)

day13之二叉树的前中后序遍历非递归+两个链表求差集

实现二叉树的前序/中序/后序非递归遍历。 已知集合A和B的元素分别用不含头结点的单链表存储,函数difference()用于求解集合A与B的差集,并将结果保存在集合A的单链表中。例如,若集合A={5,10,20,15,25,30},集合B={5,15,35,25},完成计算后A={10,20,30}。 链表结点的结构类型定义如下: struct node { int elem; node* next;...
阅读(84) 评论(0)

day12之判断一棵二叉树是否是平衡二叉树+求一颗二叉树的镜像+判断一个数在二维数组中是否存在

判断一棵二叉树是否是平衡二叉树 struct TreeNode { int val; struct TreeNode *left; struct TreeNode *right; TreeNode(int x) : val(x), left(NULL), right(NULL) { } };//方式一:求每个节点的左右子树的高度,判断是...
阅读(165) 评论(0)
161条 共9页1 2 3 4 5 ... 下一页 尾页
    个人资料
    • 访问:29007次
    • 积分:1798
    • 等级:
    • 排名:千里之外
    • 原创:157篇
    • 转载:4篇
    • 译文:0篇
    • 评论:3条
    最新评论