题目

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

解析

思路1

这一题应用堆排序算法复杂度只有O(nlog k),堆是完全二叉树的一种,最大堆就是最上面的数是最大的
该方法基于二叉树或者堆来实现,首先把数组前k个数字构建一个最大堆,然后从第k+1个数字开始遍历数组,如果遍历到的
元素小于堆顶的数字,那么久将换两个数字,重新构造堆,继续遍历,最后剩下的堆就是最小的k个数,时间复杂度O(nlog k)。

思路2

排序 + 切片

答案

标准答案

# -*- coding:utf-8 -*-
class Solution:def GetLeastNumbers_Solution(self, tinput, k):# write code here、import heapqif tinput == None or len(tinput) < k or len(tinput) <= 0 or k <= 0:return []# 建立最小堆,最上面那个数是最小的,返回一个列表,这个列表就是从最小值开始的k个数return heapq.nsmallest(k, tinput)# -*- coding:utf-8 -*-
class Solution:def GetLeastNumbers_Solution(self, tinput, k):# write code here、import heapqif tinput == None or len(tinput) < k or len(tinput) <= 0 or k <= 0:return []return sorted(tinput)[:k]

自我实现代码

li = [1, 5, 6, 8, 92, 3, 23]class Findmixknums:def __init__(self, li, k):self.li = liself.k = kdef findknum(self):return sorted(self.li)[:self.k]findknum = Findmixknums(li, 3)
print(findknum.findknum())

转载于:https://www.cnblogs.com/shijieli/p/10802665.html

算法试题 - 找出最小 k 个数相关推荐

  1. 面试题 17.14. 最小K个数

    面试题 17.14. 最小K个数 设计一个算法,找出数组中最小的k个数.以任意顺序返回这k个数均可. 示例: 输入: arr = [1,3,5,7,2,4,6,8], k = 4 输出: [1,2,3 ...

  2. leetcode 面试题 17.14. 最小K个数 大顶堆 小顶堆 快排

    leetcode 面试题 17.14. 最小K个数 [难度:中等] 设计一个算法,找出数组中最小的k个数.以任意顺序返回这k个数均可. 示例: 输入: arr = [1,3,5,7,2,4,6,8], ...

  3. 【每日一题】 面试题 17.14. 最小K个数

    面试题 17.14. 最小K个数

  4. 程序员面试金典 - 面试题 17.14. 最小K个数(快排划分O(n))

    1. 题目 设计一个算法,找出数组中最小的k个数.以任意顺序返回这k个数均可. 示例: 输入: arr = [1,3,5,7,2,4,6,8], k = 4 输出: [1,2,3,4]提示: 0 &l ...

  5. 小k java_leetcode——面试题 17.14. 最小K个数 (java快速排序)

    描述:设计一个算法,找出数组中最小的k个数.以任意顺序返回这k个数均可. 输入: arr = [1,3,5,7,2,4,6,8], k = 4 输出: [1,2,3,4] 解题思路: 这题因为不要求排 ...

  6. 力扣 面试题 17.14. 最小K个数

    题目 设计一个算法,找出数组中最小的k个数.以任意顺序返回这k个数均可. 示例 输入: arr = [1,3,5,7,2,4,6,8], k = 4 输出: [1,2,3,4] 来源:力扣(LeetC ...

  7. 算法试题 - 找出字符流中第一个不重复的元素

    题目 题目:请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时, 第一个只出现一次的字符是"g".当从该字符流中 ...

  8. 找出最大K个数,TopK问题

    1.直接排序,再取前K: 时间复杂O(logN) 2.维护一个最大K个数的有序数组,逐个遍历: 时间复杂O( K * N ) 3.维护一个最大K个数的小根堆,逐个遍历: 时间复杂O( N * logK ...

  9. ⭐算法入门⭐《堆》中等01 —— LeetCode 面试题 17.09. 第 k 个数

    文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述   有些数的素因子只有 3 ...

最新文章

  1. Python图像处理,cv2模块,OpenCV实现目标跟踪
  2. foreach_break 面试记录
  3. JAVA项目答辩的自我评价_毕业答辩的英文自我评价范文
  4. Microsoft Visual Studio 2008从试用版转为正式版
  5. Windows2003系统无法运行CS游戏的解决方案
  6. 广州市印发《关于促进大数据发展的实施意见》
  7. Spring开发指南0.8版(By夏昕)
  8. 【C语言及程序设计】项目1-4-2-4:计算圆柱体表面积
  9. win10+VS2012+opencv2.4.11的安装和配置
  10. 云计算时代的进阶者,专访景安董事长杨小龙
  11. PPT“备注”内容字体可以修改颜色也能直接看到修改效果
  12. 好用免费的内网穿透工具
  13. javax.net.ssl.SSLPeerUnverifiedException: Hostname xxx not verified
  14. Vue框架Vue-cli脚手架引入图片报错
  15. 【Python爬虫学习】七、淘宝商品价格爬取(成功爬取)
  16. 翻译 | Qt for Python的技术愿景前瞻
  17. 推理题c语言思路,数字推理题如何确立思路
  18. 浅谈工资合理避税,五大妙招轻松搞定!
  19. 优秀程序员共有的7种优秀编程习惯
  20. 计算机应用是否比平面设计要简单,计算机平面设计的色彩语言应用论文

热门文章

  1. ORACLE查看当前连接用户的权限信息或者角色信息
  2. 开源Gis简介(转)
  3. 软件工程 软件的估计为什么这么难
  4. 关于数组名与指针的相互转换
  5. C语言 字符串和字符串数组动态分配及赋值
  6. linux求文件共有行。多个文件求共有行交集完全匹配-w
  7. MultiObjective using Evolutionary Algorithms (2) -- Multi-Objective Optimization
  8. 怎么把本地项目和远程git仓库相连通
  9. CC2431 代码分析③-忍辱负重的CC2430
  10. javascript去除首尾空白字符