代码:法一的hash表,需要时间复杂度O(n),空间复杂度O(n). 法二的游标法,需要时间复杂度O(
n
∗
l
o
g
2
n
n*log_2{n}
n∗log2n),空间复杂度O(1)
法一:map集合
classSolution{publicbooleancontainsDuplicate1(int[] nums){HashMap<Integer,Boolean> map =newHashMap<>();for(int i =0; i < nums.length; i++){if(map.get(nums[i])!=null)returntrue;
map.put(nums[i],true);}returnfalse;}/** O(N),空间复杂度O(N)
set去重,如果add时,已经存在相同元素,则添加失败,返回false
我们对其特性判断,如果添加时,返回false,就说明有重复元素,直接返回true
否则最终返回false
*/publicbooleancontainsDuplicate(int[] nums){HashSet<Integer> set =newHashSet<>();for(int i =0; i < nums.length; i++){if(!set.add(nums[i]))returntrue;}returnfalse;}}