其他分享
首页 > 其他分享> > 面试题 17.10. 主要元素

面试题 17.10. 主要元素

作者:互联网

题意理解:给定数组,找出数组中出现次数大于n/2的元素。n是数组长度。

一种方法,时间复杂度nlogn。思路是先排序,然后遍历。看每个元素和跨过n/2后的这一元素值是否相等。相等则返回当前元素。遍历完成如果不相等返回-1。只需要遍历前面n/2个元素就可以。

map思路:数组不长,存入map计数。空间和时间都是n

新思路:摩尔投票算法。讲解视频网址:https://www.bilibili.com/video/av59092107/

  讲解视频:https://www.bilibili.com/video/BV1f4411D76n

  根本原因是:出现次数大于一半的元素,消耗的速度更慢。m和n-m(m>n-m)同时减1,n-m先减到0。剩下的是m(出现次数大于一半的元素)。

想法和写法。

写法:

candidate和count,count大于0还要再进行一次遍历,判断candidate出现的次数是不是大于n/2。

 

标签:面试题,遍历,元素,www,17.10,次数,数组,大于
来源: https://www.cnblogs.com/zlh-1024powr/p/14508250.html