Leetcode-169. 多数元素

题目描述:

给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋ 的元素。

你可以假设数组是非空的,并且给定的数组总是存在多数元素。

示例 1:

输入: [3,2,3]

输出: 3

示例 2:

输入: [2,2,1,1,1,2,2]

输出: 2

解法:

1.哈希法

新建一个hashmap存储数组中的值和对应出现的次数,遍历hashmap中的所有key,找出满足条件(value>length/2)的key返回


2.投票法

设众数为+1,其他数为-1,将所有数加起来最终结果一定大于0

定义两个变量cal和cnt 初始设cal=nums[0],cnt=1

遇到nums[i]和cal相等 cnt++

遇到nums[i]和cal不相等 cnt--

当cnt==0时 设cal=nums[i] cnt=1

最终返回cal


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容