Tech_Job 板


LINE

※ [本文转录自 Soft_Job 看板 #1W-eklPU ] 嗨,大家周末愉快! 不知道还记不记得之前小弟有分享面试 Google TW SWE 的心得, 最後有提到小弟当初有发愿,如果顺利进去要把过去写过题目留存的解答整理分享出来, 最近终於施工完了,提供给有需要的人可以自由取用。 这份解答内涵盖了 781 题的 Python 3 解法(太早期刷的题目就没留解法了 QQ), 写这些解答的目的是为了还愿并且回馈给还在努力的板友, 唯一的使用限制就是请不要拿来作商业用途,让知识无偿分享出去,感谢大家。 https://www.notion.so/lenchen/LeetCode-47d625b874894484af7c055b024b9817 内容主要分成四大类, 1. 资料结构 主题涵盖常用於 Leetcode 内解题的资料结构, 较常见的:Array/String, Matrix, Linked List, HashSet/Map, Stack, Queue, Heap 较高阶的:DSU, Trie, BIT 还有偶尔会用到 Deque 跟 sortedcontainers,但数量比较少就没特别分类。 2. 演算法 这边其实是我自己的归类,不一定只有这些 XD 内容涵盖有: greedy, multiple pointers, sliding window, sort, DFS/BFS, backtracking, sweep line, rolling sum, binary search, dynamic programming, minimax 有趣的是这边没列 divide and conquer 这个经典分类, 因为好像几乎没遇到过哪题是只能使用 divide and conquer 解的, 所以就没有让它自成一个分类了。 但若有题目也可以用 divide and conquer 解的话, 我也有写下来,所以还是可以再自行了解下。 3. 图 图相关的问题因为太经典所以自成一个主题, 整理了我所遇到的常见图论演算法,还有 topological sort 的两种方式, 最重要的是 tree 相关的分类也包含在这一部分内。 4. 其他 数学、随机、位元操作相关的题目都会在这里。 大致上就分这四个部分,每个解答底下都有一行字总结这题的解题概念, 因为跨越了两年半所以 coding style 可能也有些不一样, 但保证其中 99% 的内容都是我亲手一个个字元打出来的, 希望能帮助到有需要的人 :) 另外顺便再分享一些我觉得使用 Python 3 刷题时可以用的一些小技巧, 可以让你的 code 变得更精简,大家可以看看然後挑自己喜欢的来使用: 1. 用 next 搭配 generator comprehension 来获取第一个满足条件的元素, 像是 next(ele for ele in arr if ele > 0),就可以拿到 arr 中的第一个正数。 2. 解对称性题目时,可以把引数调换 call 一次,减少重复的 code,像是: def foo(a, b): if a > b: return foo(b, a) ... 就可以让你接下来维持在 a <= b 的前提下继续写 code,或者直接 swap 引数也可以: def foo(a, b): if a > b: a, b = b, a ... 3. python dict 可以使用 tuple 作 multikey,像是 d[k1, k2, k3], 如此一来就不用巢状 dict 了(d[k1][k2][k3]) 4. 可以使用 unpacking 来抽取出需要的参数,像是: A = [1, 2, 3, 4, 5] foo, *B, bar = A 可以得到 foo == 1, B == [2, 3, 4], bar == 5 另外还可以用巢状 unpacking, 像是 for i, (a, b) in enumerate(pairs): 就超级常用。 5. Python 3.8 跟 3.9 有多了一些不错的东西, 像是 3.8 的 assignment expression(:=) 跟 3.9 的 dict shallow merge(|) 都有机会可以让 code 更精简。 6. 有些 matrix 或是 grid 的题目,两个 dimension 长度有可能为 0, 可以用 if not any(matrix): return xxx 来处理(感谢 Stefan Pochmann) 7. in 也会消费 iterator, 所以如果想知道某个 str s2 是不是另一个 str s1 的 subsequence 可以这麽做, I = iter(s1) return all(c in I for c in s2) (再次感谢 Stefan Pochmann) 8. 想要测两个数是不是同正负可以用 (a > 0) is (b > 0),记得事先检查 0 板友提供 (credit to @pig2014): a ^ b > 0 更好 9. 想要摊平巢状 list 可以用 sum(L, []) <- 不建议!途中 list 会一直重新 alloc (credit to @coquelicot) 参考 stack overflow:https://bit.ly/3rz8UqH 建议的替代: 9.1. list comprehension: A = [ele for sub in arr for ele in sub] 9.2. itertools: A = list(itertools.chain.from_iterable(arr)) 9.3. reduce: A = functools.reduce(operator.iconcat, arr, []) 10. 某些要提供 factory function 的地方,可以递回给自己,像是: trie = lambda: collections.defaultdict(trie) 11. itemgetter 在某些需要 key 的 builtin function 很好用,像是: sorted(A, key=itemgetter(1)),等同於写 key=lambda x: x[1] 12. 因为 Python list 提供 negative indexing, 在某些情况可以用 ~i 来获得对应於 i 的反向 indexing,像是: for i in range(len(A)): A[i] += xxx # A[0], A[1], A[2] , ... A[~i] += ooo # A[-1], A[-2], A[-3], ... 大概就是这些东西了吧,这些技巧有些人喜欢有些人不喜欢, 我觉得没有对错啦,就挑自己觉得不错的用吧 XD happy coding! --



※ 发信站: 批踢踢实业坊(ptt.cc), 来自: 118.161.76.160 (台湾)
※ 文章网址: https://webptt.com/cn.aspx?n=bbs/Soft_Job/M.1627032495.A.65E.html ※ 转录者: wheels (118.161.76.160 台湾), 07/23/2021 17:28:45 ※ 编辑: wheels (118.161.76.160 台湾), 07/23/2021 17:29:11
1F:推 FTICR : 感谢分享! 07/23 17:30
2F:推 CCWck : 推 07/23 17:31
3F:推 hsujerry : 不明觉厉 07/23 17:32
4F:推 hukung : 推 07/23 17:32
5F:推 imba8591 : 推 07/23 17:32
6F:推 angensun : 看不懂还是给推 07/23 17:35
7F:推 hellomen : 推 07/23 17:35
8F:推 drajan : 感谢分享 07/23 17:35
9F:→ EngineerChen: 推神人 07/23 17:39
10F:推 slirne : 推 07/23 17:42
11F:推 yjl930 : 推 07/23 17:52
12F:推 birka1222 : 推分享 07/23 17:55
13F:推 eaton1202 : 先推 07/23 17:56
14F:推 a71245969 : 推推 07/23 18:01
15F:推 jason50715 : 推 07/23 18:03
16F:推 Inglenook : 推 07/23 18:07
17F:推 pmrhappy : 推神人!!! 07/23 18:10
18F:推 xrae00429 : 推 07/23 18:11
19F:推 yumei2333 : 推 07/23 18:11
20F:推 jason840226 : 神神神 07/23 18:11
21F:推 zxc917382465: 推 07/23 18:16
22F:推 ShenJing : 推,感谢好心分享 07/23 18:19
23F:推 canis831025 : 推一个分享 谢谢! 07/23 18:22
24F:推 iamala : 看不懂XD但感谢分享 07/23 18:28
25F:推 willy6708 : 推! 07/23 18:29
26F:推 xxomg : 好猛 07/23 18:29
27F:推 Yujjlin : 推推 07/23 18:31
28F:推 shancool : 推,谢谢分享 07/23 18:33
29F:推 lovemost : 先推再看 07/23 18:33
30F:推 lovelight : 大好人啊~~~~~ 07/23 18:35
31F:推 marinsky : 推 07/23 18:37
32F:推 wei666666 : 推 07/23 18:37
33F:推 waterCoka : 推 07/23 18:38
34F:推 zzihan : 推 07/23 18:39
35F:推 a731977 : 推 07/23 18:42
36F:推 jero8818 : 推,好心分享 07/23 18:43
37F:推 j821005 : 推好人 07/23 18:46
38F:推 cloud777717 : 推推 07/23 18:49
39F:推 hao134 : 感恩 07/23 18:50
40F:推 sanchi : 排版超简洁分明,这用心推爆 07/23 18:53
41F:推 louie537 : 推 07/23 18:55
42F:推 NoAfraid : 虽然我是硬体 但还是推 07/23 18:57
43F:推 HideOnATC : 推推~ 07/23 18:58
44F:推 Haqua : 看不懂但推 07/23 19:00
45F:推 ts05593818 : 推 07/23 19:00
46F:推 FVCC : 推分享! 07/23 19:01
47F:推 koi074 : 神 07/23 19:08
48F:推 y956403 : 推 tips蛮有趣的 07/23 19:10
49F:推 eamoed : 感谢分享 向你看齐 07/23 19:17
50F:推 oldelette : 远端考试 大家都会考很好推 07/23 19:18
51F:→ oldelette : 上面留错篇 不好意思造成困扰 07/23 19:18
52F:推 cyl61123 : 推 07/23 19:21
53F:推 shashayou : 推 07/23 19:23
54F:推 yfourone : 太神了 07/23 19:24
55F:推 romeie06 : 虽然我废物 但还是推 07/23 19:27
56F:推 cvsh : 推 07/23 19:31
57F:推 purpleboy01 : 推 07/23 19:35
58F:推 zikehung : 赞 07/23 19:37
59F:推 lukuboy : 只能推!!! 07/23 19:42
60F:推 lai526 : 推 07/23 19:49
61F:推 xf413 : 推 07/23 19:50
62F:推 dsa561320 : 推 07/23 19:54
63F:推 breaker9527 : 推 07/23 19:57
64F:推 aupo : 推 07/23 19:57
65F:推 elvincwong : 神篇 留言 07/23 19:58
66F:推 best1013 : 推,感谢分享 07/23 20:11
67F:推 ipoop4u : 推 07/23 20:18
68F:推 moboo : 推!! 07/23 20:24
69F:推 ccutebenbi : 推 07/23 20:26
70F:推 atrix : 推 07/23 20:28
71F:推 k078787878 : 推强者 07/23 20:31
72F:推 aiueokaki : 推 07/23 20:35
73F:推 www17010 : 推 07/23 20:36
74F:推 chaahk2012 : 推 07/23 20:36
75F:推 yuffieAK47 : PUSH 07/23 20:36
76F:推 eju901677 : 推 07/23 20:37
77F:推 questionboy : 有看有推 谢谢大大 07/23 20:39
78F:推 e04rank : 推 07/23 20:40
79F:推 jimmy983 : 推 07/23 20:41
80F:推 lingerptt : 真棒的分享 07/23 20:49
81F:推 gigibouz : 推 谢谢分享 07/23 20:49
82F:推 lucifer5566 : 虽然我看不懂但还是要推 强者不吝分享 07/23 20:51
83F:推 brightest : 推 07/23 20:53
84F:推 japing : 推 07/23 21:03
85F:推 misomochi : 好文推 07/23 21:03
86F:推 dosmark9 : 推 07/23 21:04
87F:推 chiel : 推推 07/23 21:14
88F:推 kyrie77 : 推 07/23 21:16
89F:推 HsieHsieH : 长知识了 大推 07/23 21:18
90F:推 skysurf : 一定要推感谢一下 07/23 21:33
91F:推 llltt123 : 推 07/23 21:35
92F:推 jackie0804 : 大神推推 07/23 21:40
93F:推 shuan0713 : 推!谢谢分享! 07/23 21:40
94F:推 refusekkk : 推 07/23 21:43
95F:推 thinkdeeply : 愿楼主一生平安、上厕所有卫生纸、随时有车可以上 07/23 21:54
96F:推 ivenuss : 谢谢 帮助很大 07/23 21:57
97F:推 a78998042a : 推 07/23 21:57
98F:推 erial : 好心 07/23 22:03
99F:推 kaishu77 : 好文推推 07/23 22:05
100F:推 bj78947 : 跪了 07/23 22:06
101F:→ crazyanight : 推大神 跪了 07/23 22:09
102F:推 Psyman : 太神了,推! 07/23 22:11
103F:推 a88484486 : 推! 07/23 22:12
104F:推 xjiang : 推!! 07/23 22:18
105F:推 ejnfu : 推分享,刷起来 07/23 22:19
106F:推 dsct : 推 07/23 22:27
107F:推 yabie0229 : 好心!推!! 07/23 22:27
108F:推 s01229 : 看不懂推 07/23 22:34
109F:推 LittleYueh : 推用心 07/23 22:38
110F:推 DoD2 : 11 07/23 22:42
111F:推 pumpkin534 : 强强的 07/23 22:47
112F:推 RoubooLM : 推 07/23 22:50
113F:推 smartree : 感谢您的分享 07/23 22:56
114F:推 denyy555 : 很有趣的学问 07/23 23:06
115F:推 a1l2m3m4 : 推!祝大大一生平安喜乐 07/23 23:19
116F:推 kevin9527 : 推 07/23 23:22
117F:推 thomaskov : 好人! 07/23 23:23
118F:推 siba727 : 推分享! 07/23 23:24
119F:推 david10ne : 推 07/23 23:26
120F:推 zzz499 : 推 07/23 23:34
121F:推 vlstone : 推 感谢分享 07/23 23:37
122F:推 zorogto : 强 07/23 23:46
123F:推 longlyeagle : 像是 for i, (a, b) in enumerate(paris): 就超级常 07/23 23:55
124F:推 d880126d : 推推 最近刚好也在用python刷leetcode 07/23 23:56
125F:→ longlyeagle : pairs 07/23 23:56
感谢!完全没发现打错 XD
126F:推 longlyeagle : 写得真好 07/24 00:00
127F:推 apple222286 : 推 07/24 00:09
128F:推 sgfisme : 感谢分享 07/24 00:12
129F:推 SteveZen : 感谢分享! 07/24 00:17
130F:推 tenpoinyuki : 推 07/24 00:20
131F:推 transonic : 先推 07/24 00:22
132F:推 blazers08 : 推推推~! 07/24 00:38
133F:推 acer368 : 感谢分享 07/24 00:43
134F:推 zzzone : 太用心了!推! 07/24 00:46
135F:推 t106310218 : 感谢大大 07/24 00:46
136F:推 happyendless: 感谢大神 07/24 01:00
137F:推 qqq8525q : 谢谢大神! 07/24 01:00
138F:推 Ethical : 推,有空看 07/24 01:15
139F:推 DemonElf : 感谢分享! 07/24 01:24
140F:→ sc1 : 有不错的咖哩味 07/24 01:31
141F:推 transforman : 只能推惹 07/24 01:43
142F:推 sh3424000 : 推 07/24 01:57
143F:推 cyuan830 : 推,感谢分享 07/24 02:03
144F:推 haha248787 : 推,谢谢 07/24 02:22
145F:推 cahry : 推 07/24 02:41
146F:推 weplay : 推 07/24 02:56
147F:推 rhythmfang : 推! 07/24 03:04
148F:推 cathy9553 : 推! 07/24 03:15
149F:推 orafrank : 哇赛 ,可以出书了。 07/24 03:36
150F:推 BaGaJohn5566: 太神啦 07/24 03:37
151F:推 asdg62558 : 谢谢分享 07/24 03:38
152F:推 kinglinest : 推 07/24 03:38
153F:推 proPenciLead: 推 07/24 03:58
154F:推 as209099 : 推推 07/24 03:59
155F:嘘 pig2014 : 我爱你,但是8用xor应该较好 07/24 04:09
赞赞,又学到一招,讨论区竟然没看到有人用过 XD 我猜也有可能跟我只看 py 的文章有关
156F:推 wang20010522: 推 07/24 04:22
157F:推 poem5566 : 推 07/24 06:41
158F:推 chih2loveu : 神 07/24 06:43
159F:推 abc95007 : 感谢 07/24 07:01
160F:推 rootAtaabu : 推神人 07/24 07:42
161F:推 mchotbird : 推 07/24 07:46
162F:推 jijdamonjij : 推,正在努力刷python3 07/24 08:03
163F:推 Alvin6713 : 强者 推! 07/24 08:04
164F:推 konkona : 真高手 07/24 08:07
165F:推 huiyu8794 : 推大神 07/24 08:16
166F:推 john520 : 推 07/24 08:18
167F:推 wulouise : sign跟xor有什麽关系? 07/24 08:50
168F:推 Lucifer10896: 推 07/24 09:02
169F:推 chenteddy : 推 07/24 09:26
170F:推 andiran : 感谢大神 07/24 09:39
171F:推 qwp8510 : 推 07/24 09:53
172F:推 guf60152 : 推好心人 07/24 09:53
173F:推 kivvq98 : 推一个说到做到 07/24 10:00
174F:推 gocreating : 感谢分享,很实用! 07/24 10:35
175F:推 dt9150813 : 朝圣 07/24 10:51
176F:推 lianteh : 强! 07/24 11:08
177F:推 giyaniga : 感谢大大 07/24 11:14
178F:推 TimoBall : 负数第一位是1呀,所以 xor 後检查是不是负数就知道 07/24 11:15
179F:→ TimoBall : 同号不同号 07/24 11:15
180F:推 TimoBall : 推推大大 07/24 11:23
181F:推 tanger101 : 感谢神人分享! 07/24 11:38
182F:推 hyoga0123 : 感谢分享 07/24 11:48
183F:推 bug2 : 谢谢你的热心分享~~ 07/24 11:51
184F:推 dantevergil : 推 07/24 12:15
185F:推 lENis : 推,感谢分享 07/24 12:37
186F:推 loloman : 这个真的出书是可以赚钱的,要我就会花钱买 07/24 13:34
出书真的过誉了,在行家眼中这份解答可能有些地方还是坑坑洞洞的吧。 也请板友不吝告知内容有误的地方,我会尽快更正!
187F:→ yannkea : 佛心推推 07/24 13:55
188F:推 t1232936 : 推推 07/24 14:00
189F:推 Gway : 推一个 真强者! 07/24 15:08
190F:推 Incentive : 感谢分享~ 07/24 15:27
191F:推 jjhchris : 感谢强者分享!! 07/24 15:28
192F:推 marco79811 : 可恶 看不懂QQ 07/24 15:51
193F:推 TLIN : 推 07/24 15:52
194F:推 noddy0303 : 推 07/24 17:15
195F:→ cobrasgo : 干我真的过时了,资工出身里面竟然有几个名词没看 07/24 17:31
196F:→ cobrasgo : 过.., 07/24 17:31
197F:推 St3480 : 推 07/24 17:53
198F:推 PompelmousJ : 推 07/24 18:08
199F:推 overleaf : 推分享 07/24 18:13
200F:推 joe3381 : 推 07/24 20:52
201F:推 eleghost : 感谢分享 07/24 21:05
202F:推 a2768387 : 怒推 07/24 21:10
203F:推 Yunyung : 推 07/24 22:05
204F:推 fuvincent : 感谢 07/24 22:37
205F:嘘 coquelicot : 红明显 9 的复杂度是坏的,要小心使用 07/25 01:27
OMG 非常感谢您的提醒!差点就误导大家了,真的非常抱歉。 刚才确认 sum(L, []) 的 intermediate list 是会一直重新 allocated 的, 确实不该使用,附上 stack overflow 的传送门:https://bit.ly/3rz8UqH 建议的替代: 1. list comprehension: A = [ele for sub in arr for ele in sub] 2. itertools: A = list(itertools.chain.from_iterable(arr)) 3. reduce: A = functools.reduce(operator.iconcat, arr, []) 再次感谢 coquelicot 大大的指正! ※ 编辑: wheels (118.161.76.160 台湾), 07/25/2021 04:14:23
206F:推 qazujm1997 : 推大神分享 07/25 09:39
207F:推 venroxas : 强 07/25 10:03
208F:推 ccjfapin : 推呀 感谢大神 也想追随大神的道路 07/25 10:26
209F:推 Amazonite96 : 推葵花宝典! 07/25 10:55
210F:推 sqt : 谢谢分享,祝平安健康,事业顺遂 07/25 12:43
211F:推 ben83530 : 推 07/25 16:27
212F:推 DoBahaha : 推 07/25 19:59
213F:推 Atchoo : 推 07/25 21:02
214F:推 bag0831 : 推 07/25 22:19
215F:→ SMInice : 实在推 07/26 09:34
216F:推 BlazarArc : 推 07/26 12:20
217F:推 lin512 : 推一个 07/26 14:42
218F:推 ChiaoShin369: 感谢分享 07/26 14:51
219F:推 chinker : 推 07/26 21:37
220F:推 RRay : 推 07/27 08:39







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP