정수 배열이 주어졌을 때 , i와 j두 개의 인덱스 가 arr존재하는지 확인합니다.
- i != j
- 0 <= i, j < arr.length
- arr[i] == 2 * arr[j]
class Solution {
public boolean checkIfExist(int[] arr) {
Set<Integer> set = new HashSet<>();
for(int num: arr){
if(set.contains(num*2) || (num % 2 == 0 && set.contains(num/2))){
return true;
}
set.add(num);
}
return false;
}
}
1. 해시셋 사용:
set이라는 해시셋을 사용하여 배열을 순회하면서 각 숫자를 기록합니다.
현재 숫자의 두 배가 이미 해시셋에 있는지, 또는 현재 숫자가 짝수이며 그 절반이 해시셋에 있는지를 확인합니다.
이 조건이 만족되면 true를 반환합니다.
2. 시간 복잡도:
3. 음수, 0 처리:
결론: