In this HackerRank Java 1D Array (Part 2) problem solution you can move from index I to index i+1, i-1, or i+leap as long as the destination index is a cell containing a 0. if the destination index is greater than n-1, you win the game. we need to complete the canWin function and print true if the game can be won, otherwise false.
HackerRank Java 1D Array (Part 2) problem solution.
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution {
static int m, n;
static int arr[] = new int[200];
static int pos[] = new int[200];
public static void main(String[] args) {
int t, i;
Scanner sc = new Scanner(System.in);
t = sc.nextInt();
while(t-- >0)
{
n = sc.nextInt();
m = sc.nextInt();
for(i=0; i<n; i++)
arr[i] = sc.nextInt();
for(i=0; i<n; i++)
pos[i] = 0;
if(foo(0))
System.out.println("YES");
else
System.out.println("NO");
}
}
public static boolean foo(int index)
{
boolean result = false;
if(index+1 >= n || index + m >= n)
return true;
if(arr[index+1] == 0 && pos[index+1]==0)
{
pos[index+1]=1;
result |= foo(index+1);
}
if(arr[index+m] == 0 && pos[index+m]==0)
{
pos[index+m]=1;
result |= foo(index+m);
}
if(index>0 && arr[index-1]==0 && pos[index-1]==0)
{
pos[index-1]=1;
result |= foo(index-1);
}
return result;
}
}
0 Comments