class Solution {
  public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param a int整型vector
     * @param n int整型
     * @param K int整型
     * @return int整型
     */
    int findKth(vector<int>& nums, int n, int K) {
        int left = 0, right = n - 1;

        while (left < right) {
            int pivot = nums[left];
            int i = left, j = right;
            while (i < j) {
                while (i < j && nums[j] <= pivot) {
                    --j;
                }
                nums[i] = nums[j];

                while (i < j && nums[i] >= pivot) {
                    ++i;
                }

                nums[j] = nums[i];
            }
            nums[i] = pivot;

            if (i == K - 1) {
                return nums[i];
            } else if (i > K - 1) {
                right = i - 1;
            } else {
                left = i + 1;
            }
        }

        return nums[left];
    }
};