Problem
배열 안에 있는 임의의 수 n
에 대해서 n+1
가 배열 안에 존재한다면 그 갯수를 전부 카운트해서 응답하는 문제입니다.
Solution 1
HashSet
을 선언하여 배열 안의 값을 전부 담아둡니다.
다시 for
문을 돌며 num + 1
값이 Set
에 존재한다면 갯수를 세줍니다.
Java Code 1
class Solution {
public int countElements(int[] arr) {
Set<Integer> set = new HashSet<>();
for (int num : arr) {
set.add(num);
}
int sum = 0;
for (int num : arr) {
if (set.contains(num + 1)) {
sum++;
}
}
return sum;
}
}
Solution 2
0 <= arr[i] <= 1000
조건을 이용하여 배열의 각 숫자들의 갯수를 담아두고 더해주는 방법도 있습니다.
counting[i+1] > 0
이라면i+1
인 숫자가 존재한다는 뜻이므로 i
의 갯수인 counting[i]
를 전부 더해줍니다.
Java Code 2
class Solution {
public int countElements(int[] arr) {
int[] counting = new int[1002];
for (int num : arr) {
counting[num]++;
}
int sum = 0;
for (int i=0; i<=1000; i++) {
if (counting[i+1] > 0) {
sum += counting[i];
}
}
return sum;
}
}
'알고리즘 문제 > LeetCode' 카테고리의 다른 글
[LeetCode Easy] Duplicate Zero (Java) (0) | 2020.05.03 |
---|---|
[LeetCode Easy] Middle of the Linked List (Java) (0) | 2020.04.09 |
[LeetCode Easy] Word Pattern (Java) (1) | 2020.04.09 |
[LeetCode Medium] Coin Change 2 (Java) (0) | 2020.04.09 |
[LeetCode Easy] Best Time to Buy and Sell Stock II (Java, Kotlin) (0) | 2020.04.05 |