面试40题:
题目:最小的k个数
题:输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。
解题代码一:
# -*- coding:utf-8 -*- class Solution: def GetLeastNumbers_Solution(self, tinput, k): # write code here #此方法时间复杂度为O(nlogn) if k >len(tinput): return [] tinput.sort() return tinput[:k]
解题代码二:
# -*- coding:utf-8 -*- class Solution: def GetLeastNumbers_Solution(self, tinput, k): # write code here import heapq #此方法时间复杂度为O(nlogk) if k >len(tinput): return [] return heapq.nsmallest(k,tinput)
解题代码三:另:自己实现快速排序
# -*- coding:utf-8 -*- class Solution: def GetLeastNumbers_Solution(self, tinput, k): # write code here #此方法时间复杂度为O(nlogn) if k >len(tinput) or not tinput: return [] #tinput.sort() #实现一个快速排序 def quick_sort(array): if not array: return [] pivot=array[0] left=quick_sort([x for x in array[1:] if x<pivot]) right=quick_sort([x for x in array[1:] if x>=pivot]) return left+[pivot]+right return quick_sort(tinput)[:k]