算法试题 - 找出最小 k 个数
题目
题目:输入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 个数相关推荐
- 面试题 17.14. 最小K个数
面试题 17.14. 最小K个数 设计一个算法,找出数组中最小的k个数.以任意顺序返回这k个数均可. 示例: 输入: arr = [1,3,5,7,2,4,6,8], k = 4 输出: [1,2,3 ...
- leetcode 面试题 17.14. 最小K个数 大顶堆 小顶堆 快排
leetcode 面试题 17.14. 最小K个数 [难度:中等] 设计一个算法,找出数组中最小的k个数.以任意顺序返回这k个数均可. 示例: 输入: arr = [1,3,5,7,2,4,6,8], ...
- 【每日一题】 面试题 17.14. 最小K个数
面试题 17.14. 最小K个数
- 程序员面试金典 - 面试题 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 ...
- 小k java_leetcode——面试题 17.14. 最小K个数 (java快速排序)
描述:设计一个算法,找出数组中最小的k个数.以任意顺序返回这k个数均可. 输入: arr = [1,3,5,7,2,4,6,8], k = 4 输出: [1,2,3,4] 解题思路: 这题因为不要求排 ...
- 力扣 面试题 17.14. 最小K个数
题目 设计一个算法,找出数组中最小的k个数.以任意顺序返回这k个数均可. 示例 输入: arr = [1,3,5,7,2,4,6,8], k = 4 输出: [1,2,3,4] 来源:力扣(LeetC ...
- 算法试题 - 找出字符流中第一个不重复的元素
题目 题目:请实现一个函数用来找出字符流中第一个只出现一次的字符.例如,当从字符流中只读出前两个字符"go"时, 第一个只出现一次的字符是"g".当从该字符流中 ...
- 找出最大K个数,TopK问题
1.直接排序,再取前K: 时间复杂O(logN) 2.维护一个最大K个数的有序数组,逐个遍历: 时间复杂O( K * N ) 3.维护一个最大K个数的小根堆,逐个遍历: 时间复杂O( N * logK ...
- ⭐算法入门⭐《堆》中等01 —— LeetCode 面试题 17.09. 第 k 个数
文章目录 一.题目 1.题目描述 2.基础框架 3.原题链接 二.解题报告 1.思路分析 2.时间复杂度 3.代码详解 三.本题小知识 四.加群须知 一.题目 1.题目描述 有些数的素因子只有 3 ...
最新文章
- Python图像处理,cv2模块,OpenCV实现目标跟踪
- foreach_break 面试记录
- JAVA项目答辩的自我评价_毕业答辩的英文自我评价范文
- Microsoft Visual Studio 2008从试用版转为正式版
- Windows2003系统无法运行CS游戏的解决方案
- 广州市印发《关于促进大数据发展的实施意见》
- Spring开发指南0.8版(By夏昕)
- 【C语言及程序设计】项目1-4-2-4:计算圆柱体表面积
- win10+VS2012+opencv2.4.11的安装和配置
- 云计算时代的进阶者,专访景安董事长杨小龙
- PPT“备注”内容字体可以修改颜色也能直接看到修改效果
- 好用免费的内网穿透工具
- javax.net.ssl.SSLPeerUnverifiedException: Hostname xxx not verified
- Vue框架Vue-cli脚手架引入图片报错
- 【Python爬虫学习】七、淘宝商品价格爬取(成功爬取)
- 翻译 | Qt for Python的技术愿景前瞻
- 推理题c语言思路,数字推理题如何确立思路
- 浅谈工资合理避税,五大妙招轻松搞定!
- 优秀程序员共有的7种优秀编程习惯
- 计算机应用是否比平面设计要简单,计算机平面设计的色彩语言应用论文