- 博客(148)
- 收藏
- 关注
原创 [LeetCode] Largest Rectangle in Histogram
http://fisherlei.blogspot.com/2012/12/leetcode-largest-rectangle-in-histogram.html循环有不同的写法它这种i先动,j从i往左扫(往回扫)的方式,很适合第二种方法的剪枝,是从范围小到范围大,正好当后面比前面大的话,当前的i就没必要往前扫了,后面肯定比当前的i组成的面积大一般的i,j都往后扫,不好剪枝啊
2014-01-19 16:51:13 885
原创 Remove Nth Node From End of List
Given a linked list, remove the nth node from the end of list and return its head.For example, Given linked list: 1->2->3->4->5, and n = 2. After removing the second node from th
2014-01-17 18:28:11 525
转载 [leetcode] Longest Valid Parentheses DP~!
http://leetcodenotes.wordpress.com/2013/10/19/leetcode-longest-valid-parentheses-%E8%BF%99%E7%A7%8D%E6%8B%AC%E5%8F%B7%E7%BB%84%E5%90%88%EF%BC%8C%E6%9C%80%E9%95%BF%E7%9A%84valid%E6%8B%AC%E5%8F%B7%E7%BB
2014-01-14 17:43:49 1523
原创 implicit declaration 导致的crash
公司的intern在修改samba源码时,新加了一个配置项。 lp_keytab_principals()这个函数返回const char **在用const char **p = lp_keytab_principals()的时候,有waring warning: initialization makes pointer from integer withou
2014-01-10 18:07:31 425
原创 [leetcode] Permutations II
Given a collection of numbers that might contain duplicates, return all possible unique permutations.For example,[1,1,2] have the following unique permutations:[1,1,2], [1,2,1], and [2,1,1].
2014-01-04 16:30:41 4483 2
原创 [leetcode] Permutations
Permutations Total Accepted: 5072 Total Submissions: 16450Given a collection of numbers, return all possible permutations.For example,[1,2,3] have the following permutations:[1,2,3], [1,
2014-01-04 14:56:34 529
原创 Tair
/* * 移动到其他队列上 */void PacketQueue::moveTo(PacketQueue *destQueue) { if (_head == NULL) { // 是空链 return; } if (destQueue->_tail == NULL) { destQueue->_head = _head
2013-12-19 20:47:46 430
转载 HAPROXY
释放一个trunk:点击(此处)折叠或打开/* * Puts a memory area back to the corresponding pool. * Items are chained directly through a pointer that * is writtenin the beginning of the memory area
2013-12-12 17:25:44 444
转载 spurious wakeup pthread_cond_wait
http://vladimir_prus.blogspot.com/2005/07/spurious-wakeups.htmlOne of the two basic synchronisation primitives in multithreaded programming is called "condition variables". Here's a small exam
2013-12-08 22:22:56 561
原创 C++11 C++ primer 5th
1. why null ptrstd::vectorFoo*> foos;// ...std::fill(foos.begin(), foos.end(), 0);will compile errorin C++03 we can use std::fill (foos.begin(), foos.edn(), static_cast(0)); th
2013-11-22 16:43:44 584
原创 单链表、双向链表、循环链表等
头指针就是指向第一个结点的指针。头结点就是第一个结点不用来存储数据,而是用来简化操作的。当然也可以存储长度等附加信息。http://blog.csdn.net/zhenyusoso/article/details/6092843单链表一般可以用带头结点的也可以用不带头结点的。如果不带那么head==NULL就是空链表,head就是头指针,就是第一个元素。如果
2013-10-30 22:16:30 761
原创 面试相关
面试官可能会问你一些和技术看上去没有任何关系的问题,比如问你最近在看什么书,学习之余喜欢做什么,常去哪些网站之类的。如果你说最近在看《诛仙》,平时喜欢玩LOL,你就是在把自己往悬崖上推。实际上面试官希望听到的回答如下:“我最近在看《C++ Primer第5版》,因为我在项目中用的C++11的特性越来越多了...” “我业余时间喜欢看看TED,上面总有很多让我激动的新技术出现...”
2013-10-30 22:03:21 349
原创 POJ 1141 DP
DP问题实现的要点就是, 先求子问题。设dp[i,j]为从位置i到位置j需要加入字符的最小次数,有dp[i,j]=min(dp[i,k]+dp[k+1,j]),其中i如上市这题的dp方程发现dp[i][j]依赖于两个dp[i][k], dp[k+1][j]因此要先求所依赖的这两项才行。想办法怎么能先求这两项,只能是枚举串长度,从2到n类似矩阵链乘法。
2013-10-22 18:07:11 395
原创 关于同步异步非阻塞阻塞的终极解析
这里面有篇文章非常牛逼,说的很清楚(注意这句话System I/O can be blocking, or non-blocking synchronous, or non-blocking asynchronous)http://www.artima.com/articles/io_design_patternsP.html(看这一篇足够了)包括下面这篇http://www.sm
2013-10-11 02:38:22 1472
原创 POJ 3278 BFS
题意就是给两个数5和17,问怎么最快能从5凑到17.凑的方法有三种+1,-1,*2 这道题是一道最基础的广度优先搜索题,需要剪枝,否则超时,剪枝时剪掉已经计算过的数,否则会式计算次数成幂指数增长。广度搜索最基本的思想就是遍历每一层,之后遍历下一层,因此剪枝十分重要 1、扩展过的数值无需再扩展2、待扩展数值大于0时才可以进行 -1 扩展3、待扩展数值比k大时只能进行 -1 扩
2013-10-10 01:26:05 416
原创 POJ 2488 DFS回溯
注意3点1.这题是可以从任意点起始,任意点结束。所以如果有一个方案可以遍历棋盘,那么从(0,0)点遍历肯定能遍历,联通图么~所以满足字典序的话,只需要每次从(0,0)点深搜就行了2.注意判断ok,如果有了方案了,那么就不要再深搜了,不然就把之前的方案覆盖掉了,而且还可能是错误路径上的路径覆盖的。3.字典序,那么就是深搜的时候控制一下方向顺序,从上到下,从左到右棋盘式这一
2013-10-08 14:30:34 459
原创 Linux下Gcc生成和使用静态库和动态库详解(转)
http://www.cppblog.com/deane/articles/165216.html一、基本概念1.1什么是库在windows平台和linux平台下都大量存在着库。本质上来说库是一种可执行代码的二进制形式,可以被操作系统载入内存执行。由于windows和linux的平台不同(主要是编译器、汇编器和连接器的不同),因此二者库的二进
2013-10-08 12:31:11 420
原创 sequence point顺序点,side effect副作用
In C99 --- 6.5 ExpressionsBetween the previous and next sequence point an object shall have its stored valuemodified at most once by the evaluation of an expression. Furthermore, the prior va
2013-10-07 22:46:39 500
原创 POJ 2388(nth_element)
Who's in the MiddleTime Limit: 1000MS Memory Limit: 65536KTotal Submissions: 28486 Accepted: 16504DescriptionFJ is surveying his herd to find the most average cow.
2013-09-23 23:44:11 440
转载 http头中的host字段详解
Host:客户端指定自己想访问的http服务器的域名/IP 地址和端口号。今天同事问了一个问题引发了我对http头中host字段的详细思考,总结了以下5条。1.host字段可以是域名,也可以是ip地址。host字段域名/ip后可以跟端口号,如Host: www.6san.com:80802.host可以由程序自定义,某些程序为了防止运营商或防火墙拦截会定义虚假host3.http1
2013-09-10 16:40:10 9657
原创 POJ 2406(KMP) 证明
len%(len-next[len-1]) == 0 则是幂等的串(应该是叫幂等吧?哈哈。自创)KMP的精髓就是next数组是求pattern的某个后缀是其前缀。求法是递推。我想的证明是分情况,1.前缀后缀有重叠,那么画个图abcdefg比如a-e==c-g就是说next[g] = c那么a=c, b=d,c=e,d=f,e=g如果len%(len-next[len-1])
2013-09-10 11:39:46 506
转载 矩阵快速幂
矩阵的快速幂是用来高效地计算矩阵的高次方的。将朴素的o(n)的时间复杂度,降到log(n)。这里先对原理(主要运用了矩阵乘法的结合律)做下简单形象的介绍:一般一个矩阵的n次方,我们会通过连乘n-1次来得到它的n次幂。但做下简单的改进就能减少连乘的次数,方法如下:把n个矩阵进行两两分组,比如:A*A*A*A*A*A => (A*A)*(A*A)*(A*A)这样变的好处是,你只
2013-09-10 11:25:55 450
原创 POJ 1182(并查集)
食物链Time Limit: 1000MS Memory Limit: 10000KTotal Submissions: 37434 Accepted: 10895Description动物王国中有三类动物A,B,C,这三类动物的食物链构成了有趣的环形。A吃B, B吃C,C吃A。 现有N个动物,以1-N编号。每个动物都是A
2013-09-09 21:06:28 561
转载 并查集总结
并查集大体分为三个:普通的并查集,带种类的并查集,扩展的并查集(主要是必须指定合并时的父子关系,或者统计一些数据,比如此集合内的元素数目。)POJ-1182经典的种类并查集POJ-1308用并查集来判断一棵树。。注意空树也是树,死人也是人。POJ-1611裸地水并查集POJ-1703种类并查集POJ-1988看上去似乎和种类并查集无关,但其实仔细想想,就
2013-09-06 00:36:27 534
原创 disjont-set
用一个数组建树的过程,只需找到父节点就行了find_set 是查找树根。树根就是这个集合的代表。路径压缩,由于find_set只是找父节点,所以在这个过程中可以把每个子节点的父都指向根。 变成N叉树。按秩合并,每个节点都记录一个高度值(从x到其某一个后代节点的最长路径上边的数目)。秩低的根的父设成秩高的根。同时秩不变。若秩相等,任选一个做父,秩加1
2013-09-04 15:12:35 415
原创 POJ1088 (DP)
http://www.cppblog.com/abilitytao/archive/2009/02/19/74271.aspx递推方法
2013-09-03 21:57:48 326
原创 python
string 字符串是无法修改的。 python的两个内置函数,locals 和 globals,用于以一种基于字典的方式访问局部变量和全局变量,python的变量记录在一个字典里,key是变量名,内容就是变量的值。这个字典称之为名字空间。名字空间可以像普通的字典一样被访问。如:在函数中,每个函数都有自己的名字空间,存储这函数的局部变量,参数等,每个模块有自己的名字空间,叫
2013-08-30 23:51:15 117
原创 POJ 1159 (DP)
注意这个求的是d[0][n-1]是前面的值。所以循环的时候i不能从0往后取,就是不能从前往后推。那样d[0][n-1] 假如a[0]!=a[n-1]那么d[0][n-1] = min(d[1][n-1], d[0][n-2])这时候还没算过d[1][n-1]呢,而且后边N多状态都没算过呢,是不准确的。 应该从后往前推才行。就是求前面的值从后往前推像递增子序列的问题,求的是d的最后的
2013-08-29 23:46:23 390
原创 POJ 2192 (DP) 或者 搜索
注意怎么想DP,先把问题用递归求解。总之,要先想到怎么用递归来暴力求解,这样就先给出了一个答案,然后就会知道了那些东西被重复计算了就可以定义出DP的状态方程了比如这题,递归的话,肯定是要么从前向后匹配要么从后向前,一样的,这里代码从后向前了匹配的时候就是a的前i个,和b的前j个能匹配c的前i+j+1个,就是一个个向后匹配的过程那么决策就是第能和a[i]或者b[j]哪个匹配了
2013-08-26 22:32:03 396
转载 python实现自顶向下,自底向上
常用的算法设计思想主要有动态规划、贪婪法、随机化算法、回溯法等等,这些思想有重叠的部分,当面对一个问题的时候,从这几个思路入手往往都能得到一个还不错的答案。本来想把动态规划单独拿出来写三篇文章呢,后来发现自己学疏才浅,实在是只能讲一些皮毛,更深入的东西尝试构思了几次,也没有什么进展,打算每种设计思想就写一篇吧。动态规划(Dynamic Programming)是一种非常有用的用来解决复杂问
2013-08-26 21:27:59 1828
原创 POJ 3267 (DP)
从前向后或者从后向前都行d[i]表示前i个至少删除多少个字符后可以全用单词匹配成功或者d[i]表示i到结尾至少删除。。。。。d[i] = min{d[i-1]+1, d[j]+N)或d[i] = min{d[i+1]+1, d[j]+N)这题就是怎么去找最长匹配,如果高效找,如果就是从前向后找,那慢死注意到字符串匹配有两种方式,前缀式和后缀式这里
2013-08-23 16:02:14 350
原创 POJ 1260
注意1,把条件判断转换成min或max注意2,如果没有递推递归,那就是贪心了。贪心不回溯,never reconsider its choice.这道题最开始想的其实是贪心,如果num[i-1]*a[i]这不是DP,而是贪心,实际上贪心是不对的。因为i-1加到i,然后如果i再加到i+1,实际上做了i-1加到i+1的过程,那就不一定num[i-1]*a[i+1]局部最优解没法保证全局
2013-08-23 00:15:38 423
原创 poj2479(DP)
注意问题的转化第一次DP是求以i结尾的最大子串和然后遍历一遍就知道了到i为止的最大子串和(不必包括i) 然后正反求两次上面讲的过程正反两次的结果挨着的两个值相加就是和了。然后求个最大值就行了#include #include #include using namespace std;int main(){ int num = 0;
2013-08-20 00:27:49 386
原创 算法真谛
很多算法都是,算过的就不算了,做过的就不做了.这样来省的时间. 就是所谓的算法 比如KMP,其实也是,就是失效数组其实就是失效时,模式串的前缀已经比较过了,所以就不需要比较了,直接用失效数组跳到需要比较的地方,然后再比较下一个
2013-04-30 16:19:26 349
转载 字节序和网络字节序( 转载)
<br />intel系列的cpu是小尾(Little Endian),高位的字节放在前面,低位的字节放到后面,如果网络传输等等需要进行字节转换,因为最初是摩托罗拉系列的cpu(主要应用于工控机,arm系列或者power pc系列)先出来混的,他们的cpu是相反的,大尾(Big Endian)的,所以他们的cpu在网络上传输是不需要转换的 http://blog.csdn.net/sipsir/archive/2007/08/07/1730843.aspx 1 字节序由于不同的计算机系统采用不同的字节序存储
2011-01-28 10:51:00 392
转载 守护进程之重读配置文件
<br /><br /> 1. 介绍<br /> 如果守护进程有一配置文件,那么当该守护进程启动时,它读该文件,但是一旦启动后守护进程一般不会再去查看它。当系统管理员更改了配置文件,我们需要通知守护进程守护进程重读该文件。因为守护进程不与终端相结合,或者是无控制终端的会话首进程,或者是孤儿进程组的成员,所以守护进程并不期望接受SIGHUP信号。所以,我们可以利用SIGHUP信号实现配置文件重读。<br />2. 源程序<br /> view plaincopy to clipboardprint?#
2011-01-24 10:50:00 696
转载 关于C++的扯淡
<br /> <br /> 今天下午在看C++Primer的时候跟同学东扯西扯一些乱七八糟的东西就填在这里。这本书还真的是不错的。 <br /> <br /> C++ 的诞生大约是在1980-1983年。总之我的一直以来的基本观点是,C++当初的诞生一定不是为了现在面向对象方法论上教授的那些扯淡的东西……什么把一个类的数据封装起来,只提供Get()和Set()接口来提高它的安全性啦,什么画一个业务流程图再转化为类图啦,之类的。C++的诞生离计算机的企业级大规模应用和面向对象设计方法论的诞生还有一段时间,
2011-01-21 14:41:00 584
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人