leetcode 문제
현재 배열의 기준이 되는 값보다 뒤에 있는 값이 (인덱스가 더 큰 값이) 기준 값과 같은 쌍을 good pairs 라고 하고 그 페어의 갯수를 찾아주는 문제
해결방법
이중 for 문을 통해서 해당 기준이 되는 값을 만들고 그 값보다 인덱스가 큰 값들을 비교해서 good pairs 를 세어주는 방식
Map과 for를 활용하여 같은 값이 나온다면 good pairs 의 값을 중복해서 저장해주는 방법
(그냥 ++ 해주게 되면 단순히 한바퀴만 돌게 되고 끝난다. 중복해서 더해줘야 원하는 갯수를 세어줄 수 있음)
코드
class Solution {
public int numIdenticalPairs(int[] nums) {
// 굳 페어를 찾는 문제
// 굳페어 ==> 값이 같고, 배열 인덱스의 값이 클 때
if (nums == null || nums.length == 0) {
return 0;
}
int count = 0 ;
for(int i = 0 ; i < nums.length ; i++){
for(int j = i+1 ; j < nums.length; j++){
if(nums[i] == nums[j]){
count++;
}
}
}
return count;
}
}
class Solution {
public int numIdenticalPairs(int[] nums) {
// 굳 페어를 찾는 문제
// 굳페어 ==> 값이 같고, 배열 인덱스의 값이 클 때
if (nums == null || nums.length == 0) {
return 0;
}
// key: int value; value: number of occurrence
Map<Integer, Integer> map = new HashMap<>();
int count = 0;
for (int i : nums) {
if (map.containsKey(i)) {
count += map.get(i);
map.put(i, map.get(i) + 1);
} else {
map.put(i, 1);
}
}
return count;
}
}