Goldman Sachs Interview Question
Senior Software Development EngineersCountry: United States
Interview Type: Phone Interview
*
* @author kirika
*/
public class ArrayCycle {
public static void main(String[] args){
ArrayCycle ac=new ArrayCycle();
System.out.println("Array Cycle Length: "+ac.detectArrayCycle(new int[]{1,0}));
}
public int detectArrayCycle(int[] a){
int s=a.length;
int c=0;//cycle length
int ni=0; //next arrary idx, start from a[0]
boolean cd=false;//cycle detected
int [] v=new int[s];//array idx visit tracker to calculate
do{
v[ni]=1;//mark a[n] as visited
ni=a[ni];
c+=1;
if(v[ni]==1){
cd=true;
}
}while(ni<s && cd!=true);
return cd?c:-1;
}
}
public class ArrayCycle {
public static void main(String[] args){
ArrayCycle ac=new ArrayCycle();
System.out.println("Array Cycle Length: "+ac.detectArrayCycle(new int[]{1,0}));
}
public int detectArrayCycle(int[] a){
int s=a.length;
int c=0;//cycle length
int ni=0; //next arrary idx, start from a[0]
boolean cd=false;//cycle detected
int [] v=new int[s];//array idx visit tracker to calculate
do{
v[ni]=1;//mark a[n] as visited
ni=a[ni];
c+=1;
if(v[ni]==1){
cd=true;
}
}while(ni<s && cd!=true);
return cd?c:-1;
}
- enthusiastic techie January 27, 2021