#
# 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
#
#
# @param a int整型一维数组
# @param n int整型
# @param K int整型
# @return int整型
#
class Solution:
def findKth(self , a: List[int], n: int, K: int) -> int:
# write code here
def pivot(A, p, r):
# 给出A[r]应该处于的位置
target = A[r]
i = p-1
for j in range(p, r):
if A[j] <= target:
i += 1
A[j], A[i] = A[i], A[j]
i += 1
A[r], A[i] = A[i], A[r]
return i
# return i, flag
left = 0
right = n-1
while left < right:
x = pivot(a, left, right)
if x == n-K:
return a[x]
elif x < n-K:
left = x + 1
else:
right = x - 1
return a[left]
二分查找+快速排序
二分查找一时没有想到,开始还是想着用递归的方法解决。耽误了时间

京公网安备 11010502036488号