Lesson 6 - distinct

GwanMtCat·2023년 5월 25일
0

Write a function

class Solution { public int solution(int[] A); }

that, given an array A consisting of N integers, returns the number of distinct values in array A.

For example, given array A consisting of six elements such that:

A[0] = 2 A[1] = 1 A[2] = 1
A[3] = 2 A[4] = 3 A[5] = 1
the function should return 3, because there are 3 distinct values appearing in array A, namely 1, 2 and 3.

Write an efficient algorithm for the following assumptions:

N is an integer within the range [0..100,000];
each element of array A is an integer within the range [−1,000,000..1,000,000].


내 답안

중복된 숫자를 모두 구별한 숫자가 배열에 몇개인지 리턴하면되므로 Set을 활용하였다.

import java.util.HashSet;
import java.util.Set;

class Solution {
    public int solution(int[] A) {
        Set set = new HashSet();
        for(int num: A) {
            set.add(num);
        }

        return set.size();
    }
}

다른 답안

Stream을 활용한 답안도 있다.

public int solution(int[] A) {
    return (int)Arrays.stream(A).distinct().count();
}

XOR 비트 연산으로 중복 된 값 인지 체크하는 답안도 있다.

import java.util.Arrays;
public int solution(int[] A) {
  int N = A.length;
  if(0 == N) return 0;

  Arrays.sort(A);
  int distinctNum = 1;
  for (int i=1; i<N; i++){
    if(0 != (A[i -1] ^ A[i])) distinctNum++;
  }
  return distinctNum;
}

0개의 댓글