数组中有一个数字出现的次数超过数组的一半,请找出这个数字

方法一:先对数组进行排序,(n+1)/2位置的数字即为要找的数,最小时间复杂度在O(nlgn)

方法二:如果一个数字出现次数超过数组长度的一半,表明这个数字出现的次数要超过其他数字出现的次数总和还多,所以考虑每次删除两个不同的数,那么在剩下的数中,待查找数字出现次数仍然超过总数的一半,不断重复这个过程,直到最终剩下为同一个数字,即为要找的数字

posted @ 2015-04-24 15:55  希隆囚徒  阅读(362)  评论(0编辑  收藏  举报