作者suhang (suhang)
看板Prob_Solve
標題[問題] 如何再精進?
時間Fri May 17 10:03:20 2019
我以前並沒有競賽經驗
為了工作面試而開始寫leetcode, 最早連recursion都寫得很痛苦
一邊練習也一邊跳槽,持續練習準備下次跳槽
也寫了600+題了,很多題都反覆練習,每天下班持續練習個五題十題
我自覺常用(考)的dfs, bfs, sort, tree, stack, queue
binary search, trie, binary search tree
都算熟悉,都能很快寫出模板並了解為什麼,但似乎就卡在這
好像就只會寫模板題,常常稍有變化就卡住了
(高手們的"基本結構/算法"一定包含更廣)
例如
https://leetcode.com/problems/ternary-expression-parser/
看了題我就直覺可以用 stack
因此我就從i=0 開始往後走,開始分析遇到 ? or : 該怎麼入棧出棧
但是越寫越雜,總是過不了,
瞄了別人的做法 (開心!的確也可以用 stack解)
別人從最後往前走,條理分明,20行解決
另外又一題,這個例子更糟,完全沒想法
https://leetcode.com/problems/max-chunks-to-make-sorted/
看了解答才知道,主要精神是求區間最大值,有兩種主要做法
1 排序,然後對比原輸入(類似greedy的概念)
2 用兩個arr記錄位置i左邊最大的和右手邊最小的元素(有點類似dp的概念)
看了也能懂,而且他們也沒用更難的結構或是算法
但自己本身的狀況就是糟,因為完全沒有想法,
連掙扎都不知道怎麼抖,如果是面試,真的是乾整場
這些症頭該怎麼辦?我該怎麼更進一步?
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 73.189.14.17
※ 文章網址: https://www.ptt.cc/bbs/Prob_Solve/M.1558058603.A.5D1.html
※ 編輯: suhang (73.189.14.17), 05/17/2019 10:09:41
推 FRAXIS: 第一題 如果你沒念過 Compiler 的話可以找相關的書看看 05/17 10:47
→ FRAXIS: Compiler 上的技術是通用型的 不用太拘泥這種針對特殊題目 05/17 10:49
→ FRAXIS: 的特殊解法 05/17 10:49
※ 編輯: suhang (73.189.14.17), 05/17/2019 16:17:59
※ suhang:轉錄至看板 Oversea_Job 05/17 16:18
推 CoNsTaR: 面對沒想法的題目,先不要去想著套你學的那些東西吧 05/19 09:09
→ CoNsTaR: 先針對問題的需要找出困難點(把問題抽象),你自然就會 05/19 09:09
→ CoNsTaR: 知道可能哪些技巧可以解 05/19 09:09
→ CoNsTaR: 例如第二題,先想為什麼不能切成任意多塊?很簡單因為左 05/19 09:09
→ CoNsTaR: 邊那塊必須沒有包含比右邊那塊還大的值,那問題就變簡單 05/19 09:09
→ CoNsTaR: 了(抽象了),只要找左邊的值有沒有大於右邊,然後你才 05/19 09:09
→ CoNsTaR: 來想要用什麼資結演算法來幫忙 05/19 09:09
→ CoNsTaR: 要是有方法可以單看問題描述就直接map到對應資結演算法 05/19 09:10
→ CoNsTaR: 我和你買那個方法,太神了 05/19 09:10