
前言
今天的题目
昨天的题解
题目
每天一道剑指offer-最小的K个数
题目详述
输入n个整数,找出其中最小的K个数。例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,
题目详解
思路
使用一个大小为K的最大堆,然后堆里面最大的数是堆顶,然后每次比较堆顶的数和数组中的数,如果堆顶的数比数组中的数A大,那么就把堆顶的数弹出来,把数组中的数A进堆,这样子到最后堆里面的堆顶始终是比外面的数小,而堆里的其他数是小于堆顶的数(最大堆的性质),所以堆中的数就是最小的k个数
代码
代码截图(避免乱码)

结束语
作者乔戈里亲历2019秋招,哈工大计算机本硕,百度java工程师,欢迎大家关注我的微信公众号:程序员乔戈里,公众号有3T编程资源,以及我和我朋友(百度C++工程师)在秋招期间整理的近200M的面试必考的java与C++面经,并有每天一道leetcode打卡群与技术交流群,欢迎关注。
本文探讨了如何从一组整数中找到最小的K个数的问题,通过使用最大堆的数据结构,实现了高效的算法解决方案。具体步骤包括构建初始堆、比较并更新堆元素,确保堆顶始终是最小的K个数中的最大值。
172万+

被折叠的 条评论
为什么被折叠?



