问题
给定一个数组,判断是否存在重复元素。 如果存在,则返回true。不存在,则返回false。
思路
利用set自动去重。在向set添加元素的时候,会返回是否添加成功。利用该特性,遍历数组,逐一向set中添加,如果全部添加成功,则最终结果返回false。一旦某个元素添加set失败,则中止循环,最终结果返回true。
也可以先对原数组排序,接着比较是否存在相同元素。 另外也可以利用set自动去重功能直接添加元素,最后比较原数组和set大小。 但是这两种方式都没有第一种效率高。
实现
public class ContainsDuplicate {
public static void main(String[] args) {
int[] nums = new int[]{1,1,1,3,3,4,3,2,4,2};
System.out.println(containsDuplicate(nums));
}
private static boolean containsDuplicate(int[] nums) {
Set<Integer> set = new HashSet<>();
for (int num : nums) {
if (!set.add(num)){
return true;
}
}
return false;
}
}
网友评论