leetcode 1512_For or Map

권권·2023년 3월 16일
0

Java 예제🛒

목록 보기
7/14
post-thumbnail

leetcode 문제

현재 배열의 기준이 되는 값보다 뒤에 있는 값이 (인덱스가 더 큰 값이) 기준 값과 같은 쌍을 good pairs 라고 하고 그 페어의 갯수를 찾아주는 문제

해결방법

  1. 이중 for 문을 통해서 해당 기준이 되는 값을 만들고 그 값보다 인덱스가 큰 값들을 비교해서 good pairs 를 세어주는 방식

  2. Map과 for를 활용하여 같은 값이 나온다면 good pairs 의 값을 중복해서 저장해주는 방법
    (그냥 ++ 해주게 되면 단순히 한바퀴만 돌게 되고 끝난다. 중복해서 더해줘야 원하는 갯수를 세어줄 수 있음)

코드

1. 이중 for 문 활용

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;
    }
}

2. Map 활용

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;
}
}
profile
안녕하세요

0개의 댓글