<span style="font-family: Arial, Helvetica, sans-serif; background-color: rgb(255, 255, 255);">Given an array of integers, find if the array contains any duplicates. Your function should return true if any value appears at least twice in the array,</span>
and it should return false if every element is distinct.
Hide Tags: Array,Hash Table
解题思路:
起初使用的HashMap,一个for循环,将i与数组中的值nums[i],作为键值对进行存储,如果不重复,存入,如果重复直接返回true。 但是在leetcode的OJ编译时,出现了time limited限制。
随后,查阅资料,此处应该使用HashSet,因为HashMap存储时是对键值对进行存储,如果用一个无穷,不重复的数组进行判断,复杂度与时间消耗是很多的。
而HashSet的好处在于:HashSet实现了Set接口,它不允许集合中有重复的值,在进行存储时,先进行判断,使用contain方法即可,复杂度与时间消耗就随之降下来了。
具体可在本人总结的 JAVA学习笔记中:HashMap与HashSet的区别来看,这是一篇转载文献,可供大家参考。
代码如下:
public static boolean containDuplicate(int []nums) { Set<Integer> hm=new HashSet<Integer>(); if (nums.length==0) { return false; } int size=nums.length; for (int i = 0; i < size; i++) { if (!hm.contains(nums[i])) { hm.add(nums[i]); } else { return true; } } return false; }
时间: 2024-12-20 05:53:03