Re: [問題] 關於比對兩數列

看板java作者 (十三)時間10年前 (2014/10/28 23:09), 編輯推噓1(105)
留言6則, 2人參與, 最新討論串3/4 (看更多)
※ 引述《sunsam777 (行善為樂)》之銘言: : 數列一 整數陣列 值 1 2 3 4 5 : 數列二 整數陣列 值 3 5 : 要印出 數列二沒有的 1 2 4 : 請問該如何做呢? : 我能想到的大概就是用兩個for迴圈 : 大概這樣,倆倆互相比對,共比10次 但要怎樣才能印出1 2 4呢 : 想了很久想不出來,可否指點下? 感謝不盡 不曉得題目的數列內容就是如此,還是經過原po轉換。 假設數列1有m個,數列2有n個: 時間複雜度一定是O(n)或O(m)以上的,因為至少要loop其中一個數列。 現在關心的是迴圈內的search. 每每loop一次肯定是最慢的, 有排序用binary search,沒排序或怕重複可以建tree或丟到Map, 數字範圍小的,開1000萬以上的陣列也可。 端看數列的長度和組成。大概是這樣。 -- Sent from my Android -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.135.203.156 ※ 文章網址: http://www.ptt.cc/bbs/java/M.1414508978.A.425.html

10/28 23:14, , 1F
有排序的只要O(max(m,n))
10/28 23:14, 1F

10/28 23:15, , 2F
不需要search,用兩個index從數列前端往後走
10/28 23:15, 2F

10/28 23:16, , 3F
相同值就不理,兩個都+1。不同值,小的index+1,塞進結
10/28 23:16, 3F

10/28 23:16, , 4F
果裡面,這樣就可以走遍兩個數列
10/28 23:16, 4F

10/28 23:17, , 5F
好像應該是O(m+n)
10/28 23:17, 5F

10/28 23:26, , 6F
是的。但前提是兩個數列皆排序過。
10/28 23:26, 6F
文章代碼(AID): #1KJx6oGb (java)
討論串 (同標題文章)
文章代碼(AID): #1KJx6oGb (java)