摘要:
前言: 最近看了google的工程师写的一个非常简单的垃圾收集器,大概200多行C代码,感叹大牛总能够把复杂的东西通过很简单的语言和代码表达出来。为了增加自己的理解,决定把大牛的想法和代码分析一遍,与大家分享,顺便结合wikipedia,复习下GC的基本概念。 相信大家在写程序的过程中都遇到内存管理的问题,诸如malloc/delete、new/free等,C/C++需要程序员主动进行内存的释放,即垃圾内存的回收,而像Java就提供了GC机制来自动进行垃圾回收。一、垃圾与垃圾回收 为什么需要进行垃圾回收呢? 垃圾回收就是要让程序员感觉有“无限”的内存供他一直allocate,事实上... 阅读全文
推荐排行榜
[字符串]最长不重复子串
2013-09-30 11:35 by 庸男勿扰, 4373 阅读, 收藏,
摘要:
题目描述: 最长不重复子串(Longest No Repeat String,LNRS)就是从一个字符串中找到一个连续子串,该子串中任何两个字符都不能相同,且该子串的长度是最大的。分析:解法一:动态规划 动态规划就是用来解决这种最优化问题,关于字符串的很多有趣的问题如最长公共自序列,最长上升子序列等都可以用动态规划来解,这道题我的第一想法也是动态规划。 动态规划的核心在于寻找最优子结构,对于一个字符,如果他与他前面的最长不重复子串都没有相同的字符,那么他也可以加入这个子串中,构成一个新的子串。即对于字符数组a[],dp[i]表示以a[i]为结尾的最长不重复子串长度,dp[0] = 1,... 阅读全文
[创新工场2014] 2014创新工场校园招聘笔试题
2013-09-26 16:42 by 庸男勿扰, 1882 阅读, 收藏,
摘要:
继上一篇博文《[创新工厂2014]回文修复》后,继续推出第二道创新工厂的笔试算法题~ 对于非负数列a1、a2、......、an,在数轴上做垂线连接点(i,0)和(i,ai)。选择这样的两条线和x轴可以形成一个容器,我们以面积代表所装的水,求以这种方式构成的容器能装的最大面积。比如选择a2=3、a5=6,则所装的面积为9。分析: 这道题实际上的意思是:对于一个给定的序列,求abs(i-j)*min(a[i],a[j])的最大值! 先对序列按照高度排序,然后按照排序后的顺序进行枚举,枚举过的就做标记,表示已经访问过了,保证了当前的节点,是序列里的最小高度的板,那么以这个板为边界能装的最... 阅读全文
[九度OJ]1113.二叉树(求完全二叉树任意结点所在子树的结点数)
2013-09-07 01:26 by 庸男勿扰, 792 阅读, 收藏,
摘要:
原题链接:http://ac.jobdu.com/problem.php?pid=1113题目描述: 如上所示,由正整数1,2,3……组成了一颗特殊二叉树。我们已知这个二叉树的最后一个结点是n。现在的问题是,结点m所在的子树中一共包括多少个结点。 比如,n = 12,m = 3那么上图中的结点13,14,15以及后面的结点都是不存在的,结点m所在子树中包括的结点有3,6,7,12,因此结点m的所在子树中共有4个结点。输入: 输入数据包括多行,每行给出一组测试数据,包括两个整数m,n (1 2 3 int nodeNum_rec(int m,int n) 4 { 5 if(m>n)... 阅读全文
[数字技巧]重复数字统计算法的空间优化
2013-08-29 15:54 by 庸男勿扰, 838 阅读, 收藏,
摘要:
今天在微博上看到的一道面试题,觉得非常有意思,特记录下来。 原题是这样的: 给定数组A,大小为n,数组元素为1到n的数字,不过有的数字出现了多次,有的数字没有出现。请给出算法和程序,统计哪些数字没有出现,哪些数字出现了多少次。能够在O(n)的时间复杂度,O(1)的空间复杂度要求下完成么? 这道题目最大的难点就在于时空限制,确切的说是空间限制,如果没有空间复杂度为O(1)的要求,我们很容易想出用一个hash表来记录元素的出现次数。实现的代码如下: 1 #include 2 #include 3 #include 4 5 int a[1001]; 6 int b[1001] 7 ... 阅读全文
浙公网安备 33010602011771号