最近我在网上编码挑战中遇到了这个问题,但我似乎无法做出任何头脑的方式。沿着一维数组移动
有一维数组由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)。 –