[請益] 面試白板考題目的時間複雜度
剛剛編輯文章按到復原草稿
插入很多不必要東西
但用Pitt沒辦法編輯
所以刪除重po不好意思
以下代之前社團認識的學妹代po詢問
我是今年畢業的新鮮人
今天面試白板考的時候考了跟差集有關的問題
關於時間複雜度的部分怎麼想都想不通
已經查過資料也跟要考資工所的朋友、資工系的朋友討論過
仍然不確定答案,想請版上大神開示一下:D
題目:有A、B兩個未經排序的array
A有n個整數,B有m個整數
寫一個function回傳在A且不在B的整數。
(皆先不討論A、B內各自有重複元素的情況)
我的做法:
1.先把B的每個元素放進dictionary
2.然後用for檢查A的每個元素是否為dictionary的key,不是的話就加入ans的list
3.回傳ans
想以python的dictionary來討論這題的時間複雜度
用B建立長度為m的dictionary
新增一組key-value時間複雜度是O(1);A的長度為n
查找是否在dictionary的key時的時間複雜度是O(1)
我覺得時間複雜度是O(m+n)。
參考leetcode簡中板的類似題目的官方詳解(只有簡中版討論區有官方詳解)
https://reurl.cc/KAaRmy
leetcode這題基本一樣
是找出在A且在B的整數
官方是用set來實作
時間複雜度是O(m+n)
想請問dictionary和set()底層的hash原理會是造成時間複雜度不同的關鍵嗎?
Python程式碼如下
def solution(A:List[int], B:List[int]):
ans = []
dic = dict()
for b in B:
dic[b] = b
for a in A:
if a not in dic:
ans.append(a)
return ans
另外,我知道hash在python以外的語言像是C/C++
若是基於紅黑樹來實做的話
時間複雜度會是O(nlogm)。
我想問的是python的時間複雜度!
補充
想知道答案是因為
面試官說我的答案O(m+n)一定不對
他很肯定說這樣做答案絕對不是線性的
想請問這樣計算時間複雜度到底哪裡有問題
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 114.24.250.114 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/Soft_Job/M.1629135646.A.93D.html
推
08/17 02:01,
2年前
, 1F
08/17 02:01, 1F
→
08/17 02:09,
2年前
, 2F
08/17 02:09, 2F
→
08/17 02:54,
2年前
, 3F
08/17 02:54, 3F
→
08/17 02:54,
2年前
, 4F
08/17 02:54, 4F
→
08/17 02:54,
2年前
, 5F
08/17 02:54, 5F
→
08/17 02:54,
2年前
, 6F
08/17 02:54, 6F
→
08/17 02:54,
2年前
, 7F
08/17 02:54, 7F
推
08/17 04:28,
2年前
, 8F
08/17 04:28, 8F
→
08/17 06:41,
2年前
, 9F
08/17 06:41, 9F
→
08/17 06:41,
2年前
, 10F
08/17 06:41, 10F
推
08/17 06:55,
2年前
, 11F
08/17 06:55, 11F
推
08/17 07:05,
2年前
, 12F
08/17 07:05, 12F
→
08/17 07:05,
2年前
, 13F
08/17 07:05, 13F
→
08/17 07:06,
2年前
, 14F
08/17 07:06, 14F
推
08/17 08:13,
2年前
, 15F
08/17 08:13, 15F
推
08/17 08:31,
2年前
, 16F
08/17 08:31, 16F
推
08/17 08:39,
2年前
, 17F
08/17 08:39, 17F
→
08/17 08:39,
2年前
, 18F
08/17 08:39, 18F
→
08/17 08:39,
2年前
, 19F
08/17 08:39, 19F
→
08/17 08:39,
2年前
, 20F
08/17 08:39, 20F
→
08/17 08:39,
2年前
, 21F
08/17 08:39, 21F
→
08/17 08:39,
2年前
, 22F
08/17 08:39, 22F
推
08/17 09:00,
2年前
, 23F
08/17 09:00, 23F
→
08/17 09:18,
2年前
, 24F
08/17 09:18, 24F
推
08/17 09:40,
2年前
, 25F
08/17 09:40, 25F
→
08/17 09:40,
2年前
, 26F
08/17 09:40, 26F
→
08/17 09:41,
2年前
, 27F
08/17 09:41, 27F
推
08/17 11:06,
2年前
, 28F
08/17 11:06, 28F
推
08/17 11:28,
2年前
, 29F
08/17 11:28, 29F
推
08/17 13:09,
2年前
, 30F
08/17 13:09, 30F
→
08/17 13:09,
2年前
, 31F
08/17 13:09, 31F
→
08/17 13:09,
2年前
, 32F
08/17 13:09, 32F
推
08/17 18:19,
2年前
, 33F
08/17 18:19, 33F
推
08/17 18:39,
2年前
, 34F
08/17 18:39, 34F
→
08/17 18:39,
2年前
, 35F
08/17 18:39, 35F
推
08/17 21:22,
2年前
, 36F
08/17 21:22, 36F
→
08/17 21:22,
2年前
, 37F
08/17 21:22, 37F
→
08/17 21:22,
2年前
, 38F
08/17 21:22, 38F
推
08/17 21:58,
2年前
, 39F
08/17 21:58, 39F
→
08/17 21:58,
2年前
, 40F
08/17 21:58, 40F
→
08/17 21:59,
2年前
, 41F
08/17 21:59, 41F
→
08/17 22:49,
2年前
, 42F
08/17 22:49, 42F
推
08/18 01:04,
2年前
, 43F
08/18 01:04, 43F
→
08/18 01:04,
2年前
, 44F
08/18 01:04, 44F
→
08/18 01:04,
2年前
, 45F
08/18 01:04, 45F
→
08/18 07:20,
2年前
, 46F
08/18 07:20, 46F
推
08/18 09:30,
2年前
, 47F
08/18 09:30, 47F
→
08/18 09:30,
2年前
, 48F
08/18 09:30, 48F
→
08/18 09:31,
2年前
, 49F
08/18 09:31, 49F
→
08/18 09:32,
2年前
, 50F
08/18 09:32, 50F
推
08/19 13:41,
2年前
, 51F
08/19 13:41, 51F
推
08/19 13:44,
2年前
, 52F
08/19 13:44, 52F
推
08/19 22:03,
2年前
, 53F
08/19 22:03, 53F
→
08/19 22:04,
2年前
, 54F
08/19 22:04, 54F
→
08/20 23:30,
2年前
, 55F
08/20 23:30, 55F
→
08/20 23:32,
2年前
, 56F
08/20 23:32, 56F
推
08/21 19:33,
2年前
, 57F
08/21 19:33, 57F
→
08/21 19:33,
2年前
, 58F
08/21 19:33, 58F
→
08/21 19:33,
2年前
, 59F
08/21 19:33, 59F
→
08/21 19:34,
2年前
, 60F
08/21 19:34, 60F
→
08/21 19:35,
2年前
, 61F
08/21 19:35, 61F
→
08/21 19:35,
2年前
, 62F
08/21 19:35, 62F
→
08/21 19:35,
2年前
, 63F
08/21 19:35, 63F
推
08/23 10:21,
2年前
, 64F
08/23 10:21, 64F
→
08/23 10:21,
2年前
, 65F
08/23 10:21, 65F
→
08/23 22:59,
2年前
, 66F
08/23 22:59, 66F
→
08/23 22:59,
2年前
, 67F
08/23 22:59, 67F
→
08/23 23:00,
2年前
, 68F
08/23 23:00, 68F
→
08/23 23:01,
2年前
, 69F
08/23 23:01, 69F
→
08/23 23:02,
2年前
, 70F
08/23 23:02, 70F
→
08/23 23:03,
2年前
, 71F
08/23 23:03, 71F
推
08/24 07:52,
2年前
, 72F
08/24 07:52, 72F
討論串 (同標題文章)