배열의 모든 요소가 유니크하면 false를 하나라도 중복된 값이 있다면 true를 리턴하면 된다.
처음에는 기존에 배열을 set으로 변경 한 뒤, 갯수를 세어 비교를 했는데, java에서 set에 add 를 하게되면 이미 있는 값이라면 false를, 성공하면 true를 반환한다. 따라서 전부 유니크한 값이 아니라서 전체 순회를 하는 경우가 아니라면 시간을 줄일 수 있다.
class Solution {
public boolean containsDuplicate(int[] nums) {
int basicCount = nums.length;
Set<Integer> numberSet = new HashSet<>(Arrays.stream(nums).boxed().collect(Collectors.toList()));
int setCount = numberSet.size();
if(basicCount != setCount) return true;
return false;
}
}
개선 코드
class Solution {
public boolean containsDuplicate(int[] nums) {
Set<Integer> numberSet = new HashSet<>();
for(int num : nums){
if(!numberSet.add(num)){
return true;
}
}
return false;
}
}