[問題] 面試寫到的難題 (Solved)
看板Prob_Solve (計算數學 Problem Solving)作者phoenixrace (殘存亦陌路 兵敗如山倒)時間6年前 (2018/09/02 03:40)推噓21(21推 0噓 25→)留言46則, 12人參與討論串1/1
最近寫到的OA題目, 可是有testcase超時, 不知道有沒有人有啥想法
題目:
有一個array, 你要找出所有不同subarray的數量, 每個sub arrays最多包含k個奇數數字.
範例 1:
array = [1, 2, 3, 4] & k = 1
總個會有[1], [2], [3], [4], [1, 2], [2, 3], [3, 4], [2, 3, 4]這八種, 要return 8
範例 2:
array = [1, 1, 2, 3] & k = 2
會有[1], [1, 1], [1, 1, 2], [1, 2], [2], [2, 3], [3], [1, 2, 3] 要return 8種
p.s
array不是sorted的
array的size在1~1000之間
我的解法是暴力解O(n^2),可是有些testcase會超時, 不知道有沒有O(n)還是O(nlogn)解
法的
更新1:
範例2, 會有兩組[1], [1], 但要求是distinct subarray, 所以 [1], [1]算一組
更新2:
subarray是原本array連續的部分.
更新3:
範例2有錯, 已經修改了
更新4:
用了suffix arrays sorted的方法,array大小是1000的時候耗時0.02s, brute force是5.6s
感謝大家幫忙
更新5:
https://repl.it/@Lancer_Liou/BrilliantCurvyBrain
之前的code [1, 1, 1, 1]會多扣掉一些, 真正的要減掉的應該是 number of deduct arrays = min(longest common prefix, the length of the longest string which contain at most k odd num),這樣就可以了
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 24.251.153.7
※ 文章網址: https://www.ptt.cc/bbs/Prob_Solve/M.1535830812.A.E42.html
推
09/02 04:18,
6年前
, 1F
09/02 04:18, 1F
推
09/02 04:23,
6年前
, 2F
09/02 04:23, 2F
→
09/02 04:24,
6年前
, 3F
09/02 04:24, 3F
→
09/02 04:25,
6年前
, 4F
09/02 04:25, 4F
→
09/02 04:26,
6年前
, 5F
09/02 04:26, 5F
→
09/02 04:26,
6年前
, 6F
09/02 04:26, 6F
→
09/02 04:27,
6年前
, 7F
09/02 04:27, 7F
→
09/02 04:28,
6年前
, 8F
09/02 04:28, 8F
這樣可以避免duplicate subarray嗎
推
09/02 05:28,
6年前
, 9F
09/02 05:28, 9F
是連續的
推
09/02 05:52,
6年前
, 10F
09/02 05:52, 10F
→
09/02 05:55,
6年前
, 11F
09/02 05:55, 11F
→
09/02 05:56,
6年前
, 12F
09/02 05:56, 12F
推
09/02 06:39,
6年前
, 13F
09/02 06:39, 13F
→
09/02 06:39,
6年前
, 14F
09/02 06:39, 14F
→
09/02 06:39,
6年前
, 15F
09/02 06:39, 15F
lcp是kmp裡面那個longest prefix also suffix的那個? 假如是的話, 每一個suffix都要一個lcp?
推
09/02 07:18,
6年前
, 16F
09/02 07:18, 16F
推
09/02 14:29,
6年前
, 17F
09/02 14:29, 17F
→
09/02 14:31,
6年前
, 18F
09/02 14:31, 18F
→
09/02 14:32,
6年前
, 19F
09/02 14:32, 19F
→
09/02 14:33,
6年前
, 20F
09/02 14:33, 20F
→
09/02 14:34,
6年前
, 21F
09/02 14:34, 21F
感謝大家幫忙, 我之前的方法只會找所有的subarray, 可是不知道怎麼扣掉重複, 等等再把code更新一下, trie那個我等等也來試試看
→
09/02 17:00,
6年前
, 22F
09/02 17:00, 22F
→
09/02 17:32,
6年前
, 23F
09/02 17:32, 23F
推
09/02 17:49,
6年前
, 24F
09/02 17:49, 24F
→
09/02 20:02,
6年前
, 25F
09/02 20:02, 25F
推
09/02 21:34,
6年前
, 26F
09/02 21:34, 26F
推
09/02 21:43,
6年前
, 27F
09/02 21:43, 27F
推
09/02 21:45,
6年前
, 28F
09/02 21:45, 28F
對欸, 稍微更新一下找common prefix的邏輯了, 感謝
※ 編輯: phoenixrace (24.251.153.7), 09/03/2018 01:10:24
推
09/03 05:15,
6年前
, 29F
09/03 05:15, 29F
推
09/03 07:18,
6年前
, 30F
09/03 07:18, 30F
推
09/03 11:24,
6年前
, 31F
09/03 11:24, 31F
推
09/03 11:40,
6年前
, 32F
09/03 11:40, 32F
→
09/03 11:40,
6年前
, 33F
09/03 11:40, 33F
推
09/03 11:46,
6年前
, 34F
09/03 11:46, 34F
→
09/03 11:47,
6年前
, 35F
09/03 11:47, 35F
→
09/03 11:47,
6年前
, 36F
09/03 11:47, 36F
→
09/03 11:48,
6年前
, 37F
09/03 11:48, 37F
→
09/03 11:48,
6年前
, 38F
09/03 11:48, 38F
推
09/03 12:02,
6年前
, 39F
09/03 12:02, 39F
推
09/03 17:04,
6年前
, 40F
09/03 17:04, 40F
→
09/03 17:05,
6年前
, 41F
09/03 17:05, 41F
→
09/03 17:08,
6年前
, 42F
09/03 17:08, 42F
推
09/22 19:51,
6年前
, 43F
09/22 19:51, 43F
推
09/22 19:52,
6年前
, 44F
09/22 19:52, 44F
→
09/22 23:46,
6年前
, 45F
09/22 23:46, 45F
推
01/06 18:21,
6年前
, 46F
01/06 18:21, 46F
Prob_Solve 近期熱門文章
PTT數位生活區 即時熱門文章