首页 > 试题广场 >

无序数组中最小的k个数

[编程题]无序数组中最小的k个数
  • 热度指数:9126 时间限制:C/C++ 3秒,其他语言6秒 空间限制:C/C++ 32M,其他语言64M
  • 算法知识视频讲解

对于一个无序数组,数组中元素为互不相同的整数,请返回其中最小的k个数,顺序与原数组中元素顺序一致。

给定一个整数数组A及它的大小n,同时给定k,请返回其中最小的k个数。

测试样例:
[1,2,4,3],4,2
返回:[1,2]
# -*- coding:utf-8 -*-
class KthNumbers:
    def findKthNumbers(self, A, n, k):
        B=sorted(A)#对A进行排序
        ans=filter(lambda x:x<=B[k-1],A)#过滤出小于等于第k大的数字
        return ans

发表于 2018-08-28 17:08:54 回复(0)

我大python代码只要写在return里面,只需要一行就***:

return sorted(sorted(A)[:k], key=A.index)
编辑于 2017-09-12 12:13:18 回复(3)
#思路很简单就是把原来的list排序找出最小的k个对应的在原数据中的位置 写砸列表中 将位置拍序 再一一输出然
#a = [1,5,4,7,2] 5 3
#排序后a1 = [1,2,4,5,7]
#对应序号【0,4,2】
#排序[0,2,4]
输出[a[0],a[2],a[4]] = [1,4,2]
# -*- coding:utf-8 -*-

class KthNumbers:
    def findKthNumbers(self, A, n, k):
        # write code here
        A1 = sorted(A)
        s = [A.index(A1[i]) for i in range(k)]
        s.sort()
        return [A[s[i]] for i in range(k)]
发表于 2017-07-23 09:42:54 回复(0)