题目描述
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。
解法:
先快排,在取出k个最小的。
class Solution:
def GetLeastNumbers_Solution(self, tinput, k):
# write code here
if k == 0 or k>len(tinput):
return []
def quick_sort(tinput):
if not tinput:
return ''
if len(tinput) == 1:
return tinput
return [i for i in tinput[1:] if i <= tinput[0]] + [tinput[0]]+ [i for i in tinput[1:] if i > tinput[0]]
return quick_sort(tinput)[:k]
解法二:
堆排序
import heapq
class Solution:
def GetLeastNumbers_Solution(self, tinput, k):
# write code here
if k == 0 or k>len(tinput):
return []
heapq.heapify(tinput)
return heapq.nsmallest(k,tinput)
还有可以冒泡之类的,只用排出前k个就行。