简述
本系列第二篇文章,主要讲述基本概念options类,这是leveldb启动时的一些配置,主要是各个配置字段的含义要了解一下,所以本篇文章就采取源码加注释的方式(其实源码的注释就很完善,我就翻译一下)。
偶然在组里书柜里看到了这本书,听说是新人程序员的圣经,正巧自己最近也在找这种培养思维和习惯的书看,所以就打算趁闲暇看下,希望对自己有所帮助。
PS:看了几页,很多都是寓意的小故事,没法精确地摘抄某几个句子来表达思想,所以可以的话还是买本书看一看吧。
想养成刷题的习惯,之前刷过一点,但校招之后就断了,现在想捡起来,定个小目标,从头开始刷题吧,看能坚持多久。
2019/4/16,易。
这题以前做过,记得第一次做的时候应该是用的最蠢的两重遍历方法相加求解,毫无疑问超时了,隐约记得可以使用查找目标值-某个值
是否存在该vector中来反向求解,简单写了一下,通过了。其实是一个反向思维的题,正面求解超时,则反向来求。仍然属于蛮力法的范畴,n2时间复杂度,1空间复杂度,LeetCode平台耗时136ms。
尝试降低时间复杂度,想到以空间换时间,在查找目标值-某个值
的时候,上述蛮力法使用std::find
方法,说白了也是一层遍历,这层遍历目的是为了查找差值是否存在于vector中并返回下标,自然可以想到用哈希表来代替这一层遍历。当然,事先需要遍历一次原数组构建哈希表。如此时间复杂度n,空间复杂度n。