【剑指Offer】最小的K个数 解题报告(Python)

【剑指Offer】最小的K个数 解题报告(Python)

标签(空格分隔): 剑指Offer


题目地址:https://www.nowcoder.com/ta/coding-interviews

题目描述:

输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,。

解题方法

这个是面试被问过的题目,做法就是使用一个堆来做,特别适合当数据很大的时候。这个其实相当于一个信息检索的过程。据说百度喜欢问此类问题。

heapq.nlargest(n, iterable, key=None) 返回最大的n个元素(Top-K问题)

heapq.nsmallest(n, iterable, key=None) 返回最小的n个元素(Top-K问题)

代码:

# -*- coding:utf-8 -*-
import heapq
class Solution:
    def GetLeastNumbers_Solution(self, tinput, k):
        if len(tinput) < k:
            return []
        return heapq.nsmallest(k, tinput)

Date

2018 年 3 月 21 日 – 做事细心点,最近有点困,要抵制困意

你可能感兴趣的:(算法,牛客网,剑指offer)