Java 如何计算列表中元素的重复出现次数?

Java 如何计算列表中元素的重复出现次数?,java,Java,假设我有一个arraylist=[1,1,1,1,5,5,6,3,5,62,5,1,1,1,1,1,4,2,4,2,5,2,6,3,5,2,5,1,1,1,1,4,1,5,2,] 我想找到x序列的所有起始索引。 序列长度必须大于2 例如x=1 我的预期输出是: 从元素0开始,间隔大小为5。 从元素13开始,间隔大小为5。 从元素29开始,间隔大小为6 我是java编程新手,不知道逻辑是什么 我在考虑使用for循环,循环数组中的每个元素,并在元素I==1时使用计数器。我的问题是我不知道如何停止计数

假设我有一个arraylist=
[1,1,1,1,5,5,6,3,5,62,5,1,1,1,1,1,4,2,4,2,5,2,6,3,5,2,5,1,1,1,1,4,1,5,2,]

我想找到x序列的所有起始索引。 序列长度必须大于2 例如x=1

我的预期输出是: 从元素0开始,间隔大小为5。 从元素13开始,间隔大小为5。 从元素29开始,间隔大小为6

我是java编程新手,不知道逻辑是什么

我在考虑使用for循环,循环数组中的每个元素,并在元素I==1时使用计数器。我的问题是我不知道如何停止计数,并在间隔之间恢复计数

public void count(){
整数计数=0;
for(整数:ArrayList){
如果(数字==1){
计数++;
}
如果(数字!=1){
打破
}
}
}
正如你所看到的,我的尝试相当糟糕。我错过了一些重要的东西,只是看不见而已

试试这个

import java.util.*;
公共班机
{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
列表编号=新的ArrayList();
addAll(数组.asList(1,1,1,1,1,5,5,6,3,5,6,2,5,1,1,1,1,1,4,2,4,2,5,2,6,3,5,2,5,1,1,1,1,1,4,5,2));
int startIndex=-1;
整数计数=0;
System.out.print(“输入要计数的数字:”);
int x=scan.nextInt();
编号。添加(x-1);
对于(int i=0;i2)
System.out.printf(“从索引%d开始,大小为%d\n的间隔”,开始索引,计数);
计数=0;
}
}
}
}
输出:

Enter a number to count: 1                                                                                                    
start at index 0,  interval of size 5                                                                                         
start at index 13,  interval of size 5                                                                                        
start at index 29,  interval of size 6                                                                                     
我是java编程新手

…但这与java无关,是吗

我不知道逻辑是什么

这就是您在尝试实施之前需要解决的问题

提示:你能实现一些稍微不同的东西吗?将输入更改为列表中1的出现次数,这样您的输出将是
[5,5,6,1]


提示2:有时在原始列表中添加额外的数字(终止符)会更容易,因此如果-1不存在,请在末尾添加-1,这样一旦找到-1,您就知道您已经在末尾了…

请检查滑动窗口方法:

通常,数组中应该使用2个指针

第一个将指示序列的开始,第二个将指示长度或序列

开始使用该起始索引移动,直到获得值,然后使用第二个索引移动,直到到达另一个数字

然后通过在ArrayList或任何结构中保存开始索引和长度对,并设置startIndex=endindex+1来记录结果


您可以访问leetcode/Geeksforgeks了解更多相关问题和主题

Bader您能否先显示预期输出,编辑问题并向我们展示您迄今为止的尝试。--至于如何检测新“间隔”何时开始,请保留一个变量以跟踪以前的值。“如何停止计数”当值不是1时停止计数。--“如何在间隔之间继续计数”在“间隔”之间为什么要计数?希望我解决了这个问题!我建议你用纸和铅笔试试这个。用大字符写出上面的数组。使用两个不同的硬币,您只能在其中一个硬币所在的位置看到数组的值。由于它们不同,您可以知道两个值。现在,在纸上写下硬币移动时你要做的事情(每次硬币移动时,也要在纸上写下)。这个答案要求一个数字进行计数,然后扔掉它,只将列表元素与1进行比较。它应该是
if(number[i]==x)
,这只是随便一看。可能还有其他bug。