题目:
在一大堆数据中找出重复的是一件经常要做的事情。现在,我们要处理许多整数,在这些整数中,可能存在重复的数据。
你要写一个程序来做这件事情,读入数据,检查是否有重复的数据。如果有,输出“YES”这三个字母;如果没有,则输出“NO”。
输入格式:
你的程序首先会读到一个正整数n,1<=n<=100000。然后是n个整数。
输出格式:
如果这些整数中存在重复的,就输出:
YES
否则,就输出:
NO
输入样例:
5
1 2 3 1 4
输出样例:
YES
解题:
方法一:使用数组,将元素存入数组并依次进行比较
import java.util.Scanner;
public class RepeatData {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
int a[] = new int[n];
for(int i=0;i<a.length;i++)
a[i] = sc.nextInt();
int i;
loop:for(i=0;i<a.length;i++) {
for(int j=a.length-1;j>i;j--) {
if(a[i]==a[j]) {
System.out.println("YES");
break loop;
}
}
}
if(i==a.length)
System.out.println("NO");
}
}
方法二:学过集合之后可以使用HashSet集合存储元素,如果存储后集合长度发生变化,则说明有重复元素。
import java.util.HashSet;
import java.util.Scanner;
public class RepeatData {
public static void main(String[] args) {
HashSet<Integer> set = new HashSet<Integer>();
Scanner sc = new Scanner(System.in);
int n = sc.nextInt();
for (int i = 0; i < n; i++) {
set.add(sc.nextInt());
}
sc.close();
if (set.size() < n) {
System.out.println("YES");
} else {
System.out.println("NO");
}
}
}