我用圖形來解決了這個問題,但不幸的是,現在我卡具有使用二維數組,我有去了解它的最好方法問題:什麼是最快和最簡潔/正確的方式來實現這個模型類支持二維數組中的值?
public class Data {
int[][] structure;
public data(int x, int y){
structure = new int[x][y]
}
public <<TBD>> generateRandom() {
// This is what my question is about
}
}
我有一個控制器/事件處理程序類:
public class Handler implements EventHandler {
@Override
public void onEvent(Event<T> e) {
this.dataInstance.generateRandom();
// ... other stuff
}
}
以下是每種方法都行:
- Data.generateRandom()將產生在隨機位置,如果所述2D int數組隨機值在未初始化的結構中存在值或者存在等於零的值
- 如果在結構中沒有可用點,則結構的狀態是最終的(即,在字面意義上的,而不是Java的聲明)
這就是我想知道:
什麼是檢查,如果董事會是充分的最有效方法是什麼?使用圖形,我能夠檢查O(1)上的板是否已滿,並在最壞情況O(n^2 - 1),最佳情況O(1)下獲得可用但也是隨機的位置。顯然現在陣列改善n^2是困難的,所以我現在只關注執行速度和LOC。會以最快的方式做到這一點,現在使用流等以檢查整個二維數組:
Arrays.stream(board).flatMapToInt(tile -> tile.getX()).map(x -> x > 0).count() > board.getWidth() * board.getHeight()
即使突變已經選擇的元素,如果你不使用一些輔助數據結構,確定性地發現一個真正隨機可用的元素需要搜索超過一百萬個元素的整個數組;如果只允許持續存儲,則爲兩次。這是一個瓶頸。你是否願意花費大量的時間?因爲這將是需要的。在你已經想出如何解決主要問題之後,你如何構造代碼的好處。 – Gene