自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

roufoo的博客

纸上得来终觉浅 绝知此事要躬行 https://github.com/luqian2017

  • 博客(17)
  • 收藏
  • 关注

原创 LintCode-522: Tiny Url II (System Design 经典题)

这道题是System Design超经典题,但是并不简单。 首先是不能指望把一个long_url hash成一个6位字符串,因为6位字符串太短,所以会有大量重复。 解法是把short_url map成一个id (基于62),这样short_url和id是严格的一一对应了,可以互相编解码出来。那long_url又怎么和short_url或id来对应呢?答案是用系统生成的唯一的一个counter来...

2018-07-29 13:34:10 1045

原创 LintCode-501: Design-Twitter (经典系统设计题)

第一次做系统题,不知道思路。直接参考答案。做完收获也不少。 最重要的一点是在设计getTen()时,一定要从order逆序找出order最大的那10条,这样才能说是最近的10条tweet。/** * Definition of Tweet: * class Tweet { * public: * int id; * int user_id; * Strin...

2018-07-21 14:53:46 1134

原创 LintCode-121: Word Ladder II (经典搜索难题 BFS+DFS)

这道题是超级经典难题。一个是它本身就难,再一个就是很难AC(要么空间不够,要么时间超时)。我参考的网上的解法。 以下面的input为例: start = hit end = cog dict = [hot,dot,dog,lot,log,dof,mit,sit,set,mog,mig,seg,nax,max] Return [[“hit”,”hot”,”dot”,”dog”,”co...

2018-07-20 15:46:53 514

原创 LintCode-132: Word Search II (DFS深搜经典难题!)

这题挺难的。我参考的网上的答案。 思路就是暴力深搜 - 每个格子来一次DFS深搜。 注意: 1) visited[]数组还是需要 2) 注意剪枝:如果不是prefix,剪掉! 如果出界或已经访问过,剪掉! 3) char -> string 不能直接用std里面的to_string(),因为char本来就是integer,to_string(char)会生成”100”,”103”这...

2018-07-18 12:46:07 317 1

原创 LintCode-829. Word Pattern II (DFS难题)

这题挺难的,我也是参考的网上的解法,这个解法可以算是一种DFS暴力遍历所有可能解把。 注意 : 1)在helper()里面,如果调用的helper()返回false,不能直接返回false,而是要继续处理其他的solution。注意这个跟其他返回vectorclass Solution {public: /** * @param pattern: a string,de...

2018-07-15 10:25:18 322

原创 LintCode-862:Next Closest Time (DFS 搜索经典题)

这题给我感觉更有点像组合类的搜索。 要注意的地方有: 1)时间的比较最好先换成int,再来比较。 2)closet time可以大于,也可以小于原时间。比如说”23:59”的closet time是”22:22“, 这里closet time实际上是可以小于原时间的,因为是第二天的时间了。 那么怎么比较两个solution那个更好呢?比如说”13:32”,怎么比较”13:33”和”12:3...

2018-07-10 15:16:07 293

原创 LintCode-15: Permutations (排列类DFS经典题!)

这题是排列类DFS的经典题。 注意与组合类DFS的区别。 1) helper()不需要index参数。为什么呢? 在组合类DFS中,比如说我们求{1,3,2,4}的组合,我们要用index严格保证index=某数,比如说3了之后,不会再回头取。也就是说{1,3,2,4}和{3,2,1,4}是同一个solution。但是在排列类DFS中,是有可能回头取的,也就是说{1,3,2,4}和{3,2,...

2018-07-08 09:32:33 414

原创 LintCode-502: Mini Cassandra (System Design题)

这题注意query返回的vector必须是按column_key排好序的,所以最好用map/** * Definition of Column: * class Column { * public: * int key; * String value; * Column(int key, string value) { * this-&gt...

2018-07-28 14:33:50 319

原创 LintCode-538: Memcache (System Design题)

这道题目主要考验hashmap的应用。记得node.timeout = curtTime + ttl - 1; //这里要-1.class Memcache {public: class Node { public: Node(int v = 0, int t = 0) : value(v), timeout(t) {} ...

2018-07-27 14:56:55 329

原创 LintCode-519: Consistent Hashing

这是一道system design的题,但我觉得更像算法题。 参考 的网上的答案。 注意事项: 1)bit operation <<或>>优先级非常低! 这题可能有更好的基于数学的解法,这样O(1)就可以生成。下次再思考。class Solution {public: /* * @param n: a positive integer ...

2018-07-26 14:30:25 345

原创 LintCode-209: First Unique Character in a String

直接用一个长度256的数组就可以(因为ASCII码一共256个),当然也可以用set和map。 数组的版本:class Solution {public: /** * @param str: str: the given string * @return: char: the first unique character in a given string ...

2018-07-23 13:08:22 295

原创 LintCode-494: Implement Stack by Two Queues

一道经典题。记得主要操作是在push()。任何时候只会有一个queue为非空。class Stack {public: /* * @param x: An integer * @return: nothing */ void push(int x) { if (q1.empty()) { q1.push(x...

2018-07-22 13:06:03 343

原创 LintCode-642: Moving Average from Data Stream

直接用deque做的,好像也可以用queue和vector做。下次补充。class MovingAverage {public: /* * @param size: An integer */MovingAverage(int size) : sum(0), _size(size) { } /* * @param val: An integ...

2018-07-22 06:36:29 305

原创 LintCode-33: N-Queens (DFS排列经典题!)

又是一道DFS排列经典题。这题用visited[]还不够,要专门用一个isValid()函数来确保没有列冲突和两个对角线冲突。注意: 1) string的初始化: string dotStr(n, ‘.’); vector solString(n, dotStr); //good string initialization code!...

2018-07-21 14:58:30 304

原创 LintCode-10: String Permutation II (经典DFS排列题)

这题就是经典DFS排列(Permutation)题。 注意: 1)既然是Permutation,就要先sort,并加visited[]。而input是个string,所以要把string变成vector< char >才能sort。 2) 注意去重的关键一步。 if ((i > 0) && (str[i] == str[i - 1]...

2018-07-12 16:09:46 701

原创 LintCode-425: Letter Combinations of a Phone Number (DFS经典题)

经典DFS题。注意不要搞糊涂了用两层for循环。注意这题也可以用BFS,下次补充。要注意的是follow up。如果问在输入”23”的时候能否实时输出可能的单词,则要用Trie(Prefix tree)或Hashmap来预处理。用Hashmap的话,把所有的字母的前缀对应的单词放到Hashmap里面。但Hashmap的方法费空间,prefix的方法更好。class Solution {...

2018-07-11 13:47:22 200

原创 LintCode-16: Permutation II (排列类DFS+去重经典题!)

这题跟Permutation那题的区别就是在于有重复元素,比如说input={1,2,2}, output={{1,2,2}, {2,1,2}, {2,2,1}}。所以关键在于去重。我们可以把2,2看成2个不同的2,先排序,然后根据nums[i]==nums[i-1]就可以知道重复元素出来了。我们的原则是保证前面的2排在后面的2前面,避免后面的2排在前面的2的前面,这样就可以去重了。 注意: ...

2018-07-08 12:21:55 488

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除