这个算法说难不算难,说不难又要花点时间,对于我这种小菜鸟来说花了不少时间才做出来。。
我用得是递归方法,main函数里调用 getInfo(arr,0); 这个方法实现递归,arr是数组名,0是从第一个下标开始
public static void getInfo(int[] arr,int len){
for (int i = len; i < arr.length-1; i++) {
int count = 1;
for (int j = i+1; j < arr.length; j++) {
/** 如果当前元素不等于下一个元素的值,就输出当前元素,
并且把数组和下一个元素的下标再调用方法 */
if (arr[i] != arr[j]){
System.out.println(arr[i]+" "+count+"次");
if (j==arr.length-1){
System.out.println(arr[j]+" "+"1次");
break;
} //这个判断为输出数组的最后一个元素,最后一个元素不能再递归
getInfo(arr,j);
break;
}else {
/** 相反,如果当前元素和下一个元素相等时,计数器+1,继续循环 */
count++;
if (j==arr.length-1){
System.out.println(arr[i]+" "+count+"次");
break;
}
} //如果最后的元素和前面的元素相等时就要在这里输出了,
最后的元素不能继续循环
}
break;
}
}
原文:https://www.cnblogs.com/Lii-midshei/p/10638638.html