摘要:
今天来说一个简单的需求:在一个序列中找到第二大的元素。一眼看到这个问题,感觉解决的方法有很多,因为这并不是一个困难的问题。随便一想,能有下面几种解法:1 首先排序,然后取第二个位置的元素2 循环遍历元素序列,找到最大的元素,然后将其移除。再重复此过程,得到第二大的元素当然还有其他的思路,这里就不一一列举了。如果大家有什么好的想法,可以给我留言,咱们一起探讨。仔细分析一下,不难发现,上面的方法虽然可以达到目的,但是效率都不高。第一种方法相当于一次排序过程,最快也要O(nlogn)的时间才能完成。而第二种方法需要循环遍历序列两次,O(n)+O(n)的时间复杂度虽然不是无法接受,但毕竟还是要循环两次 阅读全文