Java-使用并行数组查找公共频繁数/s
我有一个数组,并且已经对它进行了排序。我希望能够找到重复的数字。接下来,我想计算这些数字重复了多少次。例如,在一个列表中[1,2,3,3,4,4]3和4重复,它们都重复两次。我下面的代码能够找到哪些数字重复,但无法让我了解如何计算它们每次重复的次数。我正在使用ArrayList。尝试跳过这一点,并将所有内容保留为纯粹的数组,不包括hashmap。谢谢你的帮助。特克斯Java-使用并行数组查找公共频繁数/s,java,arrays,Java,Arrays,我有一个数组,并且已经对它进行了排序。我希望能够找到重复的数字。接下来,我想计算这些数字重复了多少次。例如,在一个列表中[1,2,3,3,4,4]3和4重复,它们都重复两次。我下面的代码能够找到哪些数字重复,但无法让我了解如何计算它们每次重复的次数。我正在使用ArrayList。尝试跳过这一点,并将所有内容保留为纯粹的数组,不包括hashmap。谢谢你的帮助。特克斯 public static void main(String[] args) { int[]
public static void main(String[] args) {
int[] num = {1,2,3,3,4,4};
for(int x : num){
System.out.print(x + " ");
}
System.out.println("\n" + freq(num));
}
public static ArrayList<Integer> freq(int[] num){
ArrayList<Integer> list = new ArrayList<>();
for(int x=0; x < num.length-1; x++){
if(num[x] == num[x+1]){
if(!list.contains(num[x])){
list.add(num[x]);
}
}
}
return list;
}
publicstaticvoidmain(字符串[]args){
int[]num={1,2,3,3,4,4};
for(int x:num){
系统输出打印(x+“”);
}
System.out.println(“\n”+freq(num));
}
公共静态数组列表频率(int[]num){
ArrayList=新建ArrayList();
对于(int x=0;x
导入java.util.ArrayList;
公开课考试{
公共静态void main(字符串[]args){
int[]num={1,2,3,3,4,4};
for(int x:num){
系统输出打印(x+“”);
}
System.out.println(“\n”+freq(num));
}
静态类ValueCountPair{
公共价值对(最终内部价值)
{
值=val;
计数=2;
}
公共价值观;
公共整数计数;
公共字符串toString(){
返回“[”+值+”:“+计数+”];
}
}
公共静态数组列表频率(最终int[]num){
ArrayList=新建ArrayList();
ValueCountPair last=null;
对于(int x=0;x
由于您的数组已排序,您可以使用另一个数组,其中每个索引对应于此数字的点击量:
int[] count = new int[num[num.length - 1]];
然后可以为每个匹配增加此计数器的索引:
count[num[x] - 1] = count[num[x] - 1] + 1;
然而,这不会压缩您的表示,只是将其转换为另一种形式。由于您在计算之前不知道结果长度,因此不可能使用更紧凑的表示法,而不使用列表或更好的贴图,因为数组的大小必须在创建时已知。此解决方案仅适用于大于0的数字。对于其他范围,必须调整偏移
count[num[x] - 1] = count[num[x] - 1] + 1;