从一个数组中找出所有相同的元素,并输出来。
例如数组为:1,2,1,3,4,4,5,6,5,8,3,6,7,7,9,4,9,
输出结果为:1,1,3,3,4,4,4,5,5,6,6,7,7,9,9
arr = [1,2,1,3,4,4,5,6,5,8,3,6,7,7,9,4,9]
hash_table = {}
result = []
for num in arr:
if num in hash_table:
result.append(num)
hash_table[num] += 1
else:
hash_table[num] = 1
print(result)
public class MainClass {
public static void main(String[] args) {
int[] my_array = {1,2,1,3,4,4,5,6,5,8,3,6,7,7,9,4,9};
System.out.println( "数组中的重复元素为: " );
reFind(my_array);//调用函数
}
//查找重复元素
public static void reFind(int[] a) {
int count=0;
for(int j=0;j<a.length;j++) {
for(int k =j+1;k<a.length;k++) {
if(a[j]==a[k]) {
count++;//计数器
}
}
if(count==1){
System.out.println(a[j]);
}
count = 0;//计算器置为0
}
}
}
可以先从小到到排序数组,然后使用双层for循环遍历查找,比较当前元素和其他位置的元素值是否相同,如果有相同的,则将记录相同元素数量的变量值+1, 当此和位置的元素的值有相同的,则打印这个元素,循环结束则可寻找出数组中的所有相同元素。
代码如下:
public class FindSameNumInArr {
public static void main(String[] args) {
// TODO Auto-generated method stub
int arr[] = {1,2,1,3,4,4,5,6,5,8,3,6,7,7,9,4,9};
//因为输出结果是从小到大排序打印的,所以先把数组按从小到大排序
for(int i=0;i<arr.length;i++) {
for(int j=i+1;j<arr.length;j++) {
if(arr[i]>arr[j]) {
int temp=arr[i];
arr[i]=arr[j];
arr[j]=temp;
}
}
}
int same;
for(int i=0;i<arr.length;i++) {
same=0; // 和数组当前位置元素的值相同的元素数量,对于每个位置的元素,初始为0
for(int j=0;j<arr.length;j++) {
if(arr[i]==arr[j]&&i!=j) { // 如果当前元素和其他位置的元素值相同,则相同计数+1
same++;
}
}
// 如果和此位置相同的元素数量大于0,则说明有重复元素,则打印当前元素的值
if(same>0) {
System.out.print(arr[i]+" ");
}
}
}
}