320x100
문제 : https://leetcode.com/problems/array-of-doubled-pairs/
map을 하나 만든다.
map의 key는 A 배열의 요소 값이 되고 value는 해당 값이 나온 횟수가 된다.
A배열은 절대값 기준으로 오름차순 정렬한다.
문제를 보면 A[i]를 2배 한 값이 있는지만 체크하면 된다.
A[i]를 1/2 한 값을 찾거나 *2 한 값을 찾아야 하기 때문에 절대값 오름차순 정렬을 함으로서 *2 한 값만 있는지 체크하기 위함이다.
ex) A = {-4, 1, -2} 인 경우 정렬하지 않으면 1/2 (-2)도 체크하고 *2 (-8)한 값도 체크해야 한다. 절대값 기준 오름차순 정렬한다면 A = {1, -2, -4}가 될 것이기 때문에 *2한 값만 체크해도 된다.
값을 찾을 때 더 빠르게 찾기 위해 map을 이용했다. 해당 값을 찾았으면 value값을 갱신한다.(사용한 개수를 빼준다.)
만약 값을 찾을 수 없는 경우 false를 반환한다.
배열을 탐색하면서 현재 값의 *2한 값을 찾아야하
만약 A[i]값이 0이라면 곱하기한 값도 0이므로 이 때는 예외처리 해준다.
시간복잡도는 O(NlogN).
위 링크 풀이방법 되게 좋은 듯.
320x100
'알고리즘 문제 > Leetcode' 카테고리의 다른 글
[Leetcode][965] Univalued Binary Tree (0) | 2019.01.01 |
---|---|
[Leetcode][961] N-Repeated Element in Size 2N Array (0) | 2018.12.23 |
[Leetcode][931] Minimum Falling Path Sum (0) | 2018.12.18 |
[Leetcode][958] Check Completeness of a Binary Tree (0) | 2018.12.17 |
[Leetcode][955] Delete Columns to Make Sorted II (0) | 2018.12.16 |
댓글