문제
원문 보기 (영어)리스트에서 k번째로 작은 값을 반환하세요 (k는 1부터 셉니다). Quickselect 알고리즘을 사용하면 전체를 정렬하지 않고 평균 O(n) 시간에 찾을 수 있습니다.
kth_smallest(numbers, k)를 구현하세요.
입력
numbers: 정수로 이루어진 리스트입니다. k: 반환할 작은 값의 순서(1부터 시작).
출력
k번째로 작은 값을 반환하세요.
제약 조건
1 ≤ k ≤ 길이 ≤ 200,000
예시
예시 1
입력:
k = 3
numbers = [7, 10, 4, 3, 20, 15]
예상 출력:
expected = 7
입력:
long long k = 3;
std::vector<long long> numbers = {7, 10, 4, 3, 20, 15};
예상 출력:
long long expected = 7;
입력:
long k = 3;
long[] numbers = new long[] {7, 10, 4, 3, 20, 15};
예상 출력:
long expected = 7;
설명
정렬 결과: 3, 4, 7, 10, 15, 20; 3번째로 작은 값은 7입니다.
예시 2
입력:
k = 2
numbers = [5, 5, 1]
예상 출력:
expected = 5
입력:
long long k = 2;
std::vector<long long> numbers = {5, 5, 1};
예상 출력:
long long expected = 5;
입력:
long k = 2;
long[] numbers = new long[] {5, 5, 1};
예상 출력:
long expected = 5;
설명
정렬 결과: 1, 5, 5; 2번째로 작은 값은 5입니다 (중복도 개수에 포함).
참고 자료
이 문제는 CodeUtility에 맞게 수정되었습니다. 위의 설명과 제한 조건을 따르세요.