一个空的vector执行pop_back操作会发生什么? 由于之前看STL源码剖析的时候,发现所执行的操作如下:只是简单的将末尾的finish迭代器减1后destroy。这让人产生一个疑问:假如这个vector为空了,finish=start了,finish再减1不就不在vector的内存控制范围了么。于是,我打算看一下vs2013编译器和g++编译器的源码。vs2013的编译器源码如下:#if _ITERATOR_DEBUG_LEV
How to kill a not responding application on Linux 转自:http://www.garron.me/en/go2linux/kill-not-responding-application-linux.htmlIntroductionI’ve seen this very few times in Linux, but yes sometimes it happens, an application or process st
【leetcode】003 Longest Substring Without Repeating Characters 首先利用hashmap和指针得到一个尽可能长的无重复字符的初始字符串,记录其长度和末尾指针。然后向后遍历,遇到第一个重复字符,更新长度信息,因为题目要求字串具有连续性,所以,我们若要往下继续寻找字串,肯定要包含遇到的这个重复字符。这时,我们可以利用滑动窗口的思想,假设新的字串包含了这个字符,则我们需要将前面保存好的子串中这个重复字符之前的字符全部去掉,利用这个规则我们可以更新老的字串的左右指针得到新串,继续往下遍历。直到遍历结束,我们将得到最大的字串长度。
【leetcode】002 Add Two Numbers 题目中提到是倒序存储,所有上述既为342+465=807。单链表,我们从题意很容易得到解题思路:用两个指针分别同步遍历两个链表将对应的节点值相加后,再加上前一对节点的进位值(初值为0)。用得到的新值模10后建立节点,并计算下一个节点的进位值。注意,若最后进位值不为0则需要增加一个尾节点。
【leetcode】001 Two Sum 第一反应是找出所有的配对,复杂度为O(n*n),这肯定不行。然后想到怎么样将时间复杂度减到O(n),每一个数我们肯定需要遍历一次。但对于配对时的找数的过程,我们可以利用hashmap的思想实现在O(1)时间确定是否存在我们需要找的数。 整个算法的过程为:遍历数组,对每一个遍历到的数若其对应的数hashmap中没有,则添加进hashmap;否则,证明我们已经找到两个数,结束程序。当我们遍历到的某一个数,其前面的数肯定已经在hashmap中。
k sum 问题系列 转自:http://tech-wonderland.net/blog/summary-of-ksum-problems.html(中文旧版)前言:做过leetcode的人都知道, 里面有2sum, 3sum(closest), 4sum等问题, 这些也是面试里面经典的问题, 考察是否能够合理利用排序这个性质, 一步一步得到高效的算法. 经过总结, 本人觉得这些问题都可以使用一个
正则表达式 转自:http://www.cnblogs.com/huxi/archive/2010/07/04/1771073.html本文介绍了Python对于正则表达式的支持,包括正则表达式基础以及Python正则表达式标准库的完整介绍及使用示例。本文的内容不包括如何编写高效的正则表达式、如何优化正则表达式,这些主题请查看其他教程。注意:本文基于Python2.4完成;如果看到不明白的词汇请记得百
Manacher算法--O(n)回文子串算法 转自:http://blog.csdn.net/ggggiqnypgjg/article/details/6645824O(n)回文子串算法注:转载的这篇文章,我发现下面那个源代码有点bug。。。在下一篇博客中改正了。。 这里,我介绍一下O(n)回文串处理的一种方法。Manacher算法.原文地址:http://zhuhongcheng.wordpr
leetcode难度及面试频率 转载自:LeetCode Question Difficulty Distribution http://blog.csdn.net/yutianzuijin/article/details/11477603 1Two Sum
计算机视觉相关的部分测试数据集和源码站点 转自:http://blog.csdn.net/zhubenfulovepoem/article/details/7191794作者:zhubenfulovepoem以下是computer vision:algorithm and application计算机视觉算法与应用这本书中附录里的关于计算机视觉的一些测试数据集和源码站点,我整理了下,加了点中文注解。
vs2008每次build都会重新编译链接 && 项目已经过期 转自:http://blog.csdn.net/movezzzz/article/details/6816605无外乎两种情况:1.时间问题,所创建的文件的时间比如是:2011-09-22 09:03:22,那么你的系统时间之前被你改动过当前时间是:2011-08-22 09:03:22。这下好了,vs每次编译的时候都会检查每个文件的最后修改日期,发现是上一个编译时间之后的
Leading dimension Leading dimension如果你用LAPACK解过矩阵本征值问题,你一定会接触到这样一个名词,“leading dimension”,比如在函数zheev中。我想绝大部分人在第一次接触这个词的时候都不明白它到底是什么意思。以前我也不明白,今天索性搜了一把,在下面找到了答案。http://icl.cs.utk.edu/lapack-forum/viewtopic.php?p=
【剑指Offer面试编程题】题目1509:树中两个结点的最低公共祖先--九度OJ 首先是树的输入,这个利用中序遍历的特点递归输入就行。然后,我们需要判断给出的两个节点是否都在树中,不在直接输出非法信息。若都在树中则继续查找,这个时候我们需要递归查找,给定一个头节点和两个待查的节点值,首先判断如果节点值等于头结点的节点值,那么公共节点肯定就是头节点;否则,继续在头结点的左支和右支中间查找,若两个节点值分居左右支树中,那么公共节点肯定也就是头结点。否则我们可以通过左支或者右支返回的节点得到公共节点。
【剑指Offer面试编程题】题目1508:把字符串转换成整数--九度OJ 本题应该难度不大,首先我们输入一个字符串,然后判断首位,若为符号则需要标记一下,若为数字则加入到结果中,若为其他的证明这个不是合法的字符串不需要往下处理。然后就是后面的字符处理,只需要接纳数字字符,遇到其他字符证明需要停止接纳了。最后输出结果即可。
【剑指Offer面试编程题】题目1507:不用加减乘除做加法--九度OJ 求和而不用四则运算,我们可能需要联想到加法的机器实现,机器实现当然原理和位操作类似,所以,我们可以通过位操作来实现加法。 假设给出的num1和num2,首先我们将num1^num2得到那些0 1位应该相加,没有进位。然后,我们用num1&&num2得到所有进位组成的数,因为这个进位组成的数应该是左移一位然后加入到之前得到的那个没有进位的数中。若,还有进位,证明位操作还有冲突,需要继续左移并加入到之前的结果中。直到所有的进位处理完毕为止。
【剑指Offer面试编程题】题目1506:求1+2+3+...+n--九度OJ 本题中开始思考发现有些棘手,不能用乘除法,但我们需要发现关键是我们可以用加减法,但加减法有一个问题,我们不能使用条件语句,也就意味我们不能轻易终止累加。那么我们想的是否有其他的操作可以替换条件语句来完成终止条件的任务,此时我们脑海里面只有逻辑操作这个候选了。是的,我们可以巧妙的利用0 和 && 的逻辑操作来作为终止条件。那么我们就可以轻易的设置一个递归函数,然后用&&来作为终止条件,完成任务。
【剑指Offer面试编程题】题目1356:孩子们的游戏(圆圈中最后剩下的数)--九度OJ 本题是一个约瑟夫环问题,具体可以参考百度百科“约瑟夫问题”的思想。在本题中同样为了处理的方便,我们假设编号从0开始到n-1。在n个人时,我们知道编号k-1人在第一次肯定出局,那么剩下0.....k-2 k k+1......n-1组成新的相对于n个人的编号:k k+1......n-1 0.......k。剩下的n-1个人(0.......n-2)组成一个新的问题,问题规模变小,但其他都没变。那么我们可以假设n-1个人中间编号为ans的人为最后的胜利者,那么这个人对应于有n个
【剑指Offer面试编程题】题目1355:扑克牌顺子--九度OJ 本题应该还是思路比较清晰的一道题目了,我们首先统计一下大小王的个数,然后对给出的数进行排序,排序后我们统计出数字的空缺数字个数,比如若排序后是1 3,则空缺数字2,空缺的数字个数为1。最后我们比较大小王的个数与空缺数字的个数,若大小王个数少则无法补充空缺,牌不是顺子。否则是顺子。