给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。
题目要求是O(n),因此所有sort(复杂度O(nlgn))是不正确的。
第一想法是使用优先队列来做,复杂度O(nlg3))的算法,但耗费堆内存,效率不高。
还未想到更优解法,先挖坑....
探讨了在非空数组中寻找第三大数的算法问题,排除了使用排序方法,因为其时间复杂度为O(nlgn),不符合题目要求。提出了优先队列的解法,但因其复杂度为O(nlg3)且消耗堆内存,效率不高,目前尚未找到更优的O(n)时间复杂度的解决方案。
给定一个非空数组,返回此数组中第三大的数。如果不存在,则返回数组中最大的数。要求算法时间复杂度必须是O(n)。
题目要求是O(n),因此所有sort(复杂度O(nlgn))是不正确的。
第一想法是使用优先队列来做,复杂度O(nlg3))的算法,但耗费堆内存,效率不高。
还未想到更优解法,先挖坑....

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