最近我在網上編碼挑戰中遇到了這個問題,但我似乎無法做出任何頭腦的方式。沿着一維數組移動
有一維數組由0和1
的玩家開始在索引0,需要超越數組的長度。
一旦陣列的長度超過了玩家的勝利。
玩家僅可以進入具有一個0
指數玩家可以移動1個退一步,1個步驟向前或向前米步驟。
問題是如何找出遊戲是否可以贏。
這一切都歸結爲以下函數簽名:
boolean winnable(int[] arr, int m){
}
有人可以幫我上手的算法。
以後添加
我所能了這個算法,這當然沒有通過大部分測試案例。
public static boolean winnable(int[] arr, int m){
int currPos = 0;
for(int i=1; i< arr.length; i++){
if(currPos == arr.length -1 - m) return true;
else if(arr[i] == 0)currPos++;
else if(arr[i] == 1){
if(arr[currPos + m] == 0) currPos = currPos + m;
}
}
return false;
}
你會碰巧有機會訪問一些測試用例嗎?對'm'有任何約束? –
我想我找到了[link](https://www.hackerrank.com/challenges/java-1d-array)。 –