Java 给定一个数组,返回连续出现次数最多的元素。在爪哇
在Java中,给定数组A[A,A,b,b,b,c,d,e,e]返回'b',因为它比数组中的任何其他元素都连续出现。我尝试过将每个元素与下一个元素进行比较,如果它们匹配,则增加一个计数,然后返回计数最高的元素,但我不知道如何将其实现为代码。注意-这假设字符在BMP中Java 给定一个数组,返回连续出现次数最多的元素。在爪哇,java,arrays,algorithm,Java,Arrays,Algorithm,在Java中,给定数组A[A,A,b,b,b,c,d,e,e]返回'b',因为它比数组中的任何其他元素都连续出现。我尝试过将每个元素与下一个元素进行比较,如果它们匹配,则增加一个计数,然后返回计数最高的元素,但我不知道如何将其实现为代码。注意-这假设字符在BMP中 保持4种状态-上一个字符,当前字符,当前计数,最大计数 首字母prev character到某个无效字符或空字符 将计数初始化为零 迭代字符,如果在任何时候当前字符和上一个字符不匹配,则重置当前字符和当前计数 当任何当前计数大于最大计
上一个字符
,当前字符
,当前计数
,最大计数
prev character
到某个无效字符或空字符publicstaticvoidmain(字符串[]args){
字符[]输入=新字符[]{'a','b','b','b','b','c','d','e','e'};
if(input.length==0){
返回;
}
char prev=(char)(输入[0]-1);//选择第一个字符以外的字符
char maxChar=prev;
int maxCount=0;
int currentCount=0;
for(最终字符当前:输入){
如果(上一个!=当前){
prev=当前值;
currentCount=0;
}
currentCount++;
如果(currentCount>maxCount){
maxCount=当前计数;
maxChar=电流;
}
}
System.out.println(maxChar);
}
只需将当前元素与前一个元素进行比较,计算连续元素的数量,如果检测到连续元素,则检查其是否超过现有的最大值并跟踪值:
public static int findmastconcertive(int…arr){
int res=arr[0];
整数计数=1;
int maxCount=1;
对于(int i=1;i最大计数){
最大计数=计数;
res=arr[i];
}
}
否则{
计数=1;
}
}
返回res;
}
测试:
System.out.println("Most consecutive: " + findMostConsecutive(1, 2, 1, 1, 3, 3, 3, 4, 2));
System.out.println("Most consecutive: " + findMostConsecutive(2, 2, 2, 2, 3, 3, 3, 3));
System.out.println("Most consecutive: " + findMostConsecutive(2, 2, 2, 2, 3, 3, 3, 3, 3, 3));
输出
Most consecutive: 3
Most consecutive: 2
Most consecutive: 3
你能分享一下你试过的代码吗?这个问题在CS中是基本的。你可以发布一个你已经尝试过的暴力解决方案。我们很乐意提出优化建议。