算法 topK 问题
- 没有重复元素的数组,找出前K大的元素
- 给一个数组,给出第K大的元素
# Topk 问题,在长度为n的列表中找到最大的或最小的K个
class Solution:
def topk(self, arr, k):
arr.sort(reverse=True)
ret = arr[0:k]
return ret
# TopK 如果有重复的元素,K就加+1,这里是第K大的元素
def topk1(self, arr, k):
for i in range(k):
for j in range(len(arr) - 1, i, -1):
if arr[j] > arr[j - 1]:
arr[j], arr[j - 1] = arr[j - 1], arr[j]
if arr[j] == arr[j - 1]:
k += 1
return arr[0:k], arr[k-1]