[LeetCode] Number of Distinct Averages

아르당·2026년 9월 12일

LeetCode

목록 보기
523/579
post-thumbnail

문제를 이해하고 있다면 바로 풀이를 보면 됨
전체 코드로 바로 넘어가도 됨
마음대로 번역해서 오역이 있을 수 있음

Problem

인덱스가 0부터 시작하고 짝수 길이의 배열 nums가 주어진다.
nums가 비어 있지 않으면 다음을 반복해라.

  • nums에 가장 작은 숫자를 찾고 제거해라.
  • nums에 가장 큰 숫자를 찾고 제거해라.
  • 두 개의 제거된 숫자의 평균을 계산해라.

두 개의 숫자 a와 b의 평균은 (a + b) / 2이다.

  • 예를 들어, 2와 3의 평균은 (2 + 3) / 2 = 2.5이다.

위의 과정을 통해 계산된 서로 다른 평균의 개수를 반환해라.

Example

#1
Input: nums = [4, 1, 4, 0, 3, 5]
Output: 2
Explanation:
1. 0과 5를 제거하고 평균은 (0 + 5) / 2 = 2.5이다. 현재 nums = [4, 1, 4, 3]이다.
2. 1과 4를 제거하고 평균은 (1 + 4) / 2 = 2.5이다. 현재 nums = [4, 3]이다.
3. 3과 4를 제거하고 평균은 (3 + 4) / 2 = 3.5이다.
2.5, 2.5, 3.5 중에서 서로 다른 숫자가 2개 있어서 2를 반환한다.

#2
Input: nums = [1, 100]
Output: 1
Explanation:
1과 100을 제거한 후에 계산해야 할 평균은 하나뿐이라서 1을 반환한다.

Constraints

  • 2 <= nums.length <= 100
  • nums.length는 짝수이다.
  • 0 <= nums[i] <= 100

Solved

class Solution {
    public int distinctAverages(int[] nums) {
        Set<Integer> set = new HashSet<>();
        int n = nums.length;

        Arrays.sort(nums);

        for(int i = 0; i < n / 2; i++){
            int sum = nums[i] + nums[n - 1 - i];
            set.add(sum);
        }

        return set.size();
    }
}
profile
내 마음대로 코드 작성하는 세상

0개의 댓글