给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ n/2 ⌋
的元素。
你可以假设数组是非空的,并且给定的数组总是存在多数元素。
示例 1:
输入: [3,2,3] 输出: 3
示例 2:
输入: [2,2,1,1,1,2,2] 输出: 2
https://leetcode-cn.com/problems/majority-element/
1 class Solution { 2 private Map<Integer, Integer> countNums(int[] nums) { 3 Map<Integer, Integer> counts = new HashMap <Integer, Integer>(); 4 for(int num : nums){ 5 if(!counts.containsKey(num)) { 6 counts.put(num, 1); 7 } 8 else { 9 counts.put(num, counts.get(num) + 1); 10 } 11 12 } 13 return counts; 14 } 15 16 public int majorityElement(int[] nums) { 17 Map<Integer, Integer> counts = countNums(nums); 18 19 Map.Entry<Integer, Integer> majorityEntry = null; 20 //映射中包含的映射的一个集合视图 21 for(Map.Entry<Integer, Integer> entry : counts.entrySet()) { 22 //找出最大的value 23 if(majorityEntry == null || entry.getValue() > majorityEntry.getValue()){ 24 majorityEntry = entry; 25 } 26 } 27 return majorityEntry.getKey(); 28 } 29 }
Interface Map.Entry<K,V>
- Enclosing interface:
- Map < K, V >
-
-
getValue
V getValue()
返回对应于此项的值。如果映射已从支持Map删除(由迭代器的 remove操作),这个调用的结果是不确定的。- 结果
- 此条目对应的值
- 异常
IllegalStateException
-实现可能,但不要求,如果入口已经从支持Map删除抛出该异常。
-
public static interface Map.Entry<K,V>
Map输入(键-值对)。的 Map.entrySet方法返回一个Map的集合视图,它的元素是这类。获得一个参考Map进入只有方式是从这个集合视图迭代器。这些 Map.Entry对象为迭代的持续有效的只有;更正式,如果支持Map已经入境后被返回的迭代器修改Map进入的行为是未定义的,除了通过 setValue操作在Map入口。
-
-
get
V get(Object key)
返回指定的键映射的值,或null
如果这个Map不包含的键映射。更正式地说,如果这个图中包含了从关键
k
到价值v
这样(key==null ? k==null : key.equals(k))
映射,那么这个方法返回v
;否则返回null
。(最多只能有一个这样的映射。)如果Map允许空值,那么一个
null
返回值不必要地表明Map不包含的键映射;也有可能是Map明确地映射到null
的关键,containsKey
操作可用于区分这两例。- 参数
key
-关键的相关值被返回- 结果
- 值,指定的键映射,或
null
如果这个Map不包含的键映射 - 异常
ClassCastException
如果关键是这张图的不恰当的类型( optional)NullPointerException
-如果指定的键是无效的,这张Map不允许null键( optional)
-
put
V put(K key, V value)
将指定的值与此映射中的指定键关联(可选操作)。如果映射以前包含一个键的映射,旧值将被指定的值替换。(图 m说含有一个关键的 k映射当且仅当m.containsKey(k)
将返回 true。)- 参数
key
键与指定的值是相关联的value
值必须与指定键关联- 结果
- 与 key以前的值,或者 null如果没有映射的 key。(一 null返回也表明Map以前相关的 null与 key,如果实施支持 null值。)
- 异常
UnsupportedOperationException
-如果 put操作不该Map支持ClassCastException
如果类指定的键或值防止它被存储在这个MapNullPointerException
-如果指定的键或值为空,这张Map不允许null键或值IllegalArgumentException
如果一些属性指定的键或值防止它被存储在这个Map
-