TIL
[코테연습] 1346. Check If N and Its Double Exist
크라00
2024. 12. 1. 22:24
https://leetcode.com/problems/check-if-n-and-its-double-exist/?envType=daily-question&envId=2024-12-01
문제타입
- 배열 문제 (Array Problem)
- 해시셋을 활용한 탐색 문제 (Set-based search problem)
문제분석
- 주어진 배열에서 각 원소 n에 대해 2n 또는 n/2가 배열에 존재하는지 확인하는 문제.
- 배열에 있는 두 수가 서로 "배수 관계"에 있으면 true를 반환하고, 그렇지 않으면 false를 반환.
- 주어진 배열에서 중복된 원소를 고려할 필요는 없으며, 효율적인 방법을 위해 해시셋을 사용할 수 있다.
문제풀이
- 배열을 순회하며 각 숫자에 대해 조건을 확인:
- 해당 숫자의 두 배(num * 2)가 이미 해시셋에 있는지 확인.
- 해당 숫자가 짝수일 경우, 그 절반(num / 2)이 해시셋에 있는지 확인.
- 위 조건 중 하나라도 만족하면 true를 반환.
- 조건을 만족하지 않으면 현재 숫자를 해시셋에 추가하고 계속 진행.
- 전체 배열을 확인한 후 조건을 만족하는 쌍이 없다면 false를 반환.
> java
public class Solution {
public boolean checkIfExist(int[] arr) {
HashSet<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;
}
}