看板 CSSE 關於我們 聯絡資訊
※ 引述《jeunder ()》之銘言: : 請教大家一個問題. : 有一個陣列 x[2N] 要將其內容根據某個排列規則做 permutation. : 規則如下: : 就是將 x 的偶數項依序放到 x[0 ~ N-1], : 將 x 的奇數項依序放到 x[N ~ 2N-1]. : 希望能夠做到時間複雜度為 O(N), 這顯然很容易辦到. : 但是我又希望空間複雜度能夠是 O(1), 也就是不可以有隨 N 而變大的暫存變數. : 這是否有可能辦到? : 感覺上似乎和離散數學裡面的 permutation group 有關? : 想請教大家的想法. 謝謝. :) 我不會離散數學 T___T 不過,在存取陣列的時候多包一層就啥事情都沒了 class foo{ private int x[] = new int[2*n]; //普通的取得 element public int getElement(int i){ return x[i] } //特別的取得 element public int getPermutationElement(int i){ if(i>n){ //奇數 return x[(i-n)*2+1]; }else{ return x[i*2]; } } } ===== There is no spoon... -- 侃侃長論鮮窒礙 網站:http://www.psmonkey.idv.tw 眾目睽睽無心顫 個人版:telnet://legend.twbbs.org 煢居少聊常人事 殺頭容易告白難 歡迎參觀 Java 版(@ptt.cc)精華區 \囧/ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 61.228.199.201
ykjiang:如果每個元素都會用到,這個方法一樣是 O(N) 11/17 11:28