All challenges
Medium 0 solved 0% acceptance

K-th Smallest Element

Find the k-th smallest value without fully sorting.

Problem

Return the k-th smallest value of the list (k counts from 1). Quickselect finds it in average O(n) time without sorting everything.

Implement kth_smallest(numbers, k).

Input

numbers: The list of integers. k: Which smallest value to return, starting at 1.

Output

Return the k-th smallest value.

Constraints

1 ≤ k ≤ length ≤ 200,000

Examples

Example 1
Input:
k = 3
numbers = [7, 10, 4, 3, 20, 15]

Expected output:
expected = 7
Input:
long long k = 3;
std::vector<long long> numbers = {7, 10, 4, 3, 20, 15};

Expected output:
long long expected = 7;
Input:
long k = 3;
long[] numbers = new long[] {7, 10, 4, 3, 20, 15};

Expected output:
long expected = 7;

Explanation

Sorted: 3, 4, 7, 10, 15, 20; the 3rd smallest is 7.

Example 2
Input:
k = 2
numbers = [5, 5, 1]

Expected output:
expected = 5
Input:
long long k = 2;
std::vector<long long> numbers = {5, 5, 1};

Expected output:
long long expected = 5;
Input:
long k = 2;
long[] numbers = new long[] {5, 5, 1};

Expected output:
long expected = 5;

Explanation

Sorted: 1, 5, 5; the 2nd smallest is 5 (duplicates count).

References

This challenge is adapted for CodeUtility. Follow the statement and constraints above.

Learn from others

Community solutions

No published solutions yet. Solve this challenge to share the first one.