package test;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
/**
* 隨即輸入一串數字,下標+隨機數爲下次跳躍的地方,找出跳躍了幾次到達終點
* @author kanwairen
*
*/
public class Test6 {
public static void main(String[] args){
int[] s1 = {2,3,2,1,2,1,5};
int[] s2 = {4,3,1,2,1,2};
int sum = num(6,s2);
System.out.println(sum);
}
private static int num(int count,int[] s1){
int sum =0;
List<Integer> list = new ArrayList<>();
for(int i = 0;i<count-1;i++){
int temp = s1[i];
int a1 = temp + i;
System.out.println("========="+a1);
System.out.println("========"+s1[a1]+":"+s1[count-1]);
list.add(a1);
System.out.println("*********"+list);
Set<Integer> set = new HashSet<Integer>(list);
list.clear();
list.addAll(set);
List<Integer> listNew = new ArrayList<Integer>(set);
System.out.println("****==========*****"+listNew);
sum = listNew.size();
if(s1[a1] == s1[count-1]){
break;
}
}
return sum;
}
}
輸出結果:
=========4
========1:2
*********[4]
****==========*****[4]
=========4
========1:2
*********[4, 4]
****==========*****[4]
=========3
========2:2
*********[4, 3]
****==========*****[3, 4]
2
這是曾經華爲的一套筆試題算法,個人寫的,如有不對,歡迎大家討論!