精華區beta CSSE 關於我們 聯絡資訊
◆ From: 61.228.199.201
xcycl:原 po 是問想做到 space 複雜度為 O(1), 不是 time ... 11/17 21:43
ykjiang:我也看走眼了 :p 11/17 23:23
ledia:他的意思是 in place permutation ? 11/18 01:09
b6s:唔,大概是我弄錯了,可這不是 swap 頭尾成對的偶數項就好? 11/18 04:13
b6s:btw, 我所謂頭尾成對偶數項,尾巴那隻是倒數的偶數項。 11/18 04:21
利用多次 swap,有一個 space O(1), time O(N^2) 的方法, 過程舉例如下: 0 (1 2) (3 4) (5 6) (7 8) 9 0 2 (1 4) (3 6) (5 8) 7 9 0 2 4 (1 6) (3 8) 5 7 9 0 2 4 6 (1 8) 3 5 7 9 0 2 4 6 8 1 3 5 7 9 每個 pass 都把括號內的數對 swap... 這其實是以 in place 法求轉置矩陣的一個特例, 換句話說,它是求 N by 2 矩陣的轉置(transpose) 有興趣的人,可以幫忙推廣成適用於 n by m 矩陣 的轉置矩陣。 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.59.14.146 ※ 編輯: ykjiang 來自: 61.59.14.146 (11/18 12:12)
drkkimo:好方法 11/18 20:56
ykjiang:從這個方法出發,我幾乎可以確定 space O(1), time O(N) 11/19 02:09
ykjiang:的方法存在,有興趣的人可以推推看 :) 11/19 02:10
b6s:雖然 swap 的順序不同,但我想到的跟這一樣,推~ 11/20 01:19
b6s:BTW, 這個問題應該可以視為 bipartite,所以 space O(1) 應該 11/20 01:19
b6s:可是同時要 time O(N) 就不知道了,感覺上好像頂多 O(NlogN) 11/20 01:20