zoukankan      html  css  js  c++  java
  • 剑指 Offer 39. 数组中出现次数超过一半的数字

    给定一个大小为 的数组,找到其中的多数元素。多数元素是指在数组中出现次数大于 ⌊ 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>

    • 所有已知实现类:
      AbstractMap.SimpleEntryAbstractMap.SimpleImmutableEntry
      Enclosing interface:
      Map < KV >
      •  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以前相关的 nullkey,如果实施支持 null值。)
        异常
        UnsupportedOperationException -如果 put操作不该Map支持
        ClassCastException如果类指定的键或值防止它被存储在这个Map
        NullPointerException -如果指定的键或值为空,这张Map不允许null键或值
        IllegalArgumentException如果一些属性指定的键或值防止它被存储在这个Map  

     

    • entrySet

      Set<Map.Entry<K,V>> entrySet()
      返回一个 Set映射的视图包含在这个Map。该集合是由Map的支持,所以对Map的变化反映在集合中,反之亦然。如果Map是在设置一个迭代过程中修改(除非通过迭代器的 remove操作,或通过 setValue操作返回的迭代器的映射项)的迭代的结果是不确定的。设置支持元素的去除,从Map中移除相应的映射,通过 Iterator.removeSet.removeremoveAllretainAllclear操作。它不支持 addaddAll操作。
      结果
      映射中包含的映射的一个集合视图 
    如有错误,恳求读者指出,发送到wu13213786609@outlook.com。
  • 相关阅读:
    LINQ N~layer!
    CodeSmith 破解和注册
    鼠标划过链接时弹出窗口
    ajax的loading显示在gridview的位置
    Asp.net与SQL一起打包部署安装
    编译apache报错 No recognized SSL/TLS toolkit detected
    ubuntu12.04 卸载和安装mysql
    Ubuntu12.04 英文环境下使用ibus输入中文并自动启动输入法
    Ubuntu11.10 源码编译安装PHP5.3.8 [转]
    debian 下 编译安装 mysql 二进制文件
  • 原文地址:https://www.cnblogs.com/WLCYSYS/p/13746166.html
Copyright © 2011-2022 走看看