문제
리스트에는 0, 1, …, n 중에서 n개의 서로 다른 숫자가 들어 있습니다. 따라서 이 범위에서 정확히 하나의 숫자가 누락되어 있습니다. 그 숫자를 찾으세요. (힌트: 예상되는 합과 실제 합을 비교해 보세요.)
missing_number(numbers)를 구현하세요.
입력
numbers: 0부터 n까지 중 n개의 서로 다른 숫자.
출력
누락된 숫자를 반환하세요.
제약 조건
0 ≤ n ≤ 100,000
예시
예시 1
입력:
numbers = [3, 0, 1]
예상 출력:
expected = 2
입력:
std::vector<long long> numbers = {3, 0, 1};
예상 출력:
long long expected = 2;
입력:
long[] numbers = new long[] {3, 0, 1};
예상 출력:
long expected = 2;
설명
n = 3이므로 범위는 0–3입니다. 2가 누락되어 있습니다.
예시 2
입력:
numbers = [0]
예상 출력:
expected = 1
입력:
std::vector<long long> numbers = {0};
예상 출력:
long long expected = 1;
입력:
long[] numbers = new long[] {0};
예상 출력:
long expected = 1;
설명
n = 1이고 범위는 0–1입니다. 1이 누락되어 있습니다.
접근 방법
먼저 스스로 풀어 본 뒤 힌트를 하나씩 열어 보세요.
힌트 1
숫자는 0부터 n까지의 전체 범위를 따라야 하며, 하나만 비어 있습니다.
힌트 2
완전한 범위의 합과 실제 리스트의 합을 비교하세요.
힌트 3
빠진 값이 0 또는 n인 경우도 주의하세요.
예상 복잡도
시간 O(n), 추가 공간 O(1)
참고 자료
이 문제는 CodeUtility에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.