Contains Duplicate
问题描述
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, and it should return false if every element is distinct.
算法思想
一个数组下标i, 使用Set记录扫描过得所有数字,利用Set.containsKey方法判断当前扫描数是否有和已经扫描过得数相同,如果有则返回真。
算法实现
import java.util.HashSet;
import java.util.Set;
public class Solution {
public boolean containsDuplicate(int[] nums) {
if(nums==null||nums.length<2)
return false;
Set<Integer> current = new HashSet<Integer>();
for(int i : nums){
if(current.contains(i))
return true;
else
current.add(i);
}
return false;
}
}
算法时间
T(n) = O(n)
算法测试
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class SolutionTest {
private Solution s = new Solution();
int [] nums = {11,22,33,44,55,1,2,3,4,5,6,7,8,0};
@Test
public void testDuplicateOne(){
assertEquals(true,s.containsDuplicate(nums));
}
}