在ArrayList中查找最长的重复数字?(初级java)



这是我第一次使用堆栈溢出,所以如果以任何方式格式化不正确,我很抱歉。对于一个compsci项目,我必须对一个40项的随机数数组列表做一些不同的事情。

我正在努力完成的任务是:

计算相同数字的最长运行次数。只有连续的数字才能继续跑步具有相同的值。然后打印重复编号和行程长度(例如:最长的运行次数为:3,长度为:5。(

如果有多个最大长度的游程,请标记最后一个。按以下方式打印带有最长行程标记的数组:1 1 1 6 5 4 6 3 2 3 2(3 3 3 3(1 5 6 3 4 4

我真的不知道如何解决这个问题。即使只是一些伪代码也会有所帮助;我知道这可能是两个不同的"for"循环,一个检测运行,另一个打印运行。我有一个朋友的一些代码,他使用Arrays而不是ArrayLists完成了这项工作:

public String longestRun()
{
int maxRun=1;
int currentLen = 1;
int repeated = x[0];
for (int i =1; i< 40-1; i++)
{
if (x[i] == x[i+1])
currentLen++;
else
{
if (currentLen >= maxRun)
{
maxRun = currentLen;
repeated = x[i-1];
startRun = i-maxRun;
endRun = i-1;
}
currentLen = 1;
}
} 
return "The longest run is " + maxRun + " and the repeated number is " + repeated ;
}
public String printParenth()
{
for(int i = 0; i<40; i++)
{
if(i != startRun+1 && i != endRun+1)
System.out.print(x[i]);
else if(i == startRun+1)
System.out.print("(" + x[i]);
else 
System.out.print(x[i] + ")");

}
return "";
}

我知道如何创建ArrayList,转换为字符串&打印等等,这只是我不理解的一项任务。考虑到ArrayList方法的数量和实用性的增加,我认为使用ArrayList应该更容易做到这一点。提前感谢,我真的很感激!

  • 将数字放入列表或数组中
  • 将max设置为1(您将始终至少有1个数字(
  • 将CCD_ 1初始化为1
  • 将变量most初始化为数组中的第一个数字
  • 还将变量CCD_ 3设置为数组中的第一个数字
  • 现在,从第二个数字开始遍历列表
  • 如果当前数字与上次相同,则递增count
  • 则查看CCD_ 5。
    • 如果是
      • 设置max=count
      • 设置most=last
    • 如果不是
      • 设置count0=1
      • 设置last=当前编号
  • 以这种方式继续,直到检查完所有数字

在末尾,most将包含重复的数字,max将包含重复长度。

最新更新