Lesson 4 - MissingInteger

GwanMtCat·2023년 5월 16일
0

This is a demo task.

Write a function:

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

that, given an array A of N integers, returns the smallest positive integer (greater than 0) that does not occur in A.

For example, given A = [1, 3, 6, 4, 1, 2], the function should return 5.

Given A = [1, 2, 3], the function should return 4.

Given A = [−1, −3], the function should return 1.

Write an efficient algorithm for the following assumptions:

N is an integer within the range [1..100,000];
each element of array A is an integer within the range [−1,000,000..1,000,000].
Copyright 2009–2023 by Codility Limited. All Rights Reserved. Unauthorized copying, publication or disclosure prohibited.


N의 정수들로 이루어진 배열 A에서 0을 초과하는 정수중 A배열에 없는 정수를 리턴하는 예제이다.

초반에 Set으로 중복값을 없애는 것까지는 잘 떠올렸으나

조건 중
1. 양수
2. A배열에 없음

을 망각하고 구현에 집중하다보니 답을 내리지 못했다.

이러한 숫자를 찾는 문제는 Set을 사용하면 빠를 것 같다.

답안

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

class Solution {
    public int solution(int[] A) {
        int positiveSmallestOne = 1;

        Set set = new HashSet();

        for (int num : A) {
            if (num > 0) {
                set.add(num);
            }
        }

        for (int i=1; i<=set.size()+1; i++) {
            if (!set.contains(i)) {
                positiveSmallestOne = i;
                break;
            }
        }

        return positiveSmallestOne;
    }
}

0개의 댓글