算法题/最小的k个数

python2.7

最小的 k 个数
例子说明:
例如输入 4 、5 、1、6、2、7、3 、8 这 8 个数字,则最小的 4 个数字是 1 、2、3 、4
思路:最简单的方法,将数组排序,求前k个数(后续改进)

#coding:utf-8
def kuaisu(a):
    low = []
    high = []
    middle = []
    if len(a) < 1:
        return a
    else:
        baseline = a[0]
        for i in a:
            if i < baseline:
                low.append(i)
            elif i > baseline:
                high.append(i)
            else:
                middle.append(i)
        low_arr = kuaisu(low)
        high_arr = kuaisu(high)
    return low_arr+middle+high_arr


def k_numbers(a,k):
    sort_arr = kuaisu(a)
    print(sort_arr[0:k])

k_numbers([6,7,8,1,2,3,10,11,12,5],3)

这里写图片描述

面向对象

# -*- coding:utf-8 -*-
class Solution:
    def GetLeastNumbers_Solution(self, tinput, k):
        tinput.sort()
        if k > len(tinput):
            return []
        else:
            return tinput[0:k]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值