#169 Majority Element

전우재·2023년 8월 24일
0

leetcode

목록 보기
5/21

문제링크 - https://leetcode.com/problems/majority-element/?envType=study-plan-v2&envId=top-interview-150

문제 분석

  • n == nums.length
  • 1 <= n <= 5 * 10^4
  • -10^9 <= nums[i] <= 1^09
    입력받은 배열에서 가장 많이 중복되는 값을 찾는다.

문제 해결

문제 해결 로직

풀어봤던 문제들 중 알파벳 갯수를 셀때 배열로 셌던 것을 활용했다.

  1. int array nums을 입력받는다.
  2. Map<Integer,Integer>를 선언한다.
  3. 배열을 탐색하며 배열의 값을 key로 value에는 배열 값의 중복 개수를 센다.
  4. 가장 큰 value를 가진 key를 반환한다.

코드 작성

class Solution {
    public int majorityElement(int[] nums) {
    	// Map 선언
        Map<Integer, Integer> numCount = new HashMap<>();

		// 배열을 탐색하며 배열의 값을 key로 중복 개수를 센다.
        for (int num : nums) {
            numCount.put(num, numCount.getOrDefault(num, 0) + 1);
        }
		
        // 가장 큰 value를 가진 key를 반환한다.
        int maxCount = 0;
        int mostFrequentNum = 0;

        for (Map.Entry<Integer, Integer> entry : numCount.entrySet()) {
            if (entry.getValue() > maxCount) {
                maxCount = entry.getValue();
                mostFrequentNum = entry.getKey();
            }
        }

        return mostFrequentNum;
    }
}

회고

  • 시간, 공간복잡도에서 좋은 점수를 받았지만 Map을 다루는 함수가 잘 기억나지 않았다.

0개의 댓글

관련 채용 정보