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
这是曾经华为的一套笔试题算法,个人写的,如有不对,欢迎大家讨论!