📜  门|门 IT 2005 |问题 26(1)

📅  最后修改于: 2023-12-03 15:28:48.145000             🧑  作者: Mango

门|门 IT 2005 |问题 26

问题描述

在一个包含N个元素(N为偶数)的整数数组中,找出出现次数最多的元素。 如果有两个元素出现次数相同,则返回其中任意一个。

解题思路

本问题可以使用HashMap进行解决,将每一个元素出现的次数存储在HashMap中,然后遍历HashMap,找出出现次数最多的元素即可。

示例代码如下:

public int getMaxElement(int[] nums) {
    HashMap<Integer, Integer> map = new HashMap<>();
    int maxElement = nums[0];
    int maxCount = 0;
    
    for (int num : nums) {
        if (map.containsKey(num)) {
            int count = map.get(num) + 1;
            map.put(num, count);
            if (count > maxCount) {
                maxElement = num;
                maxCount = count;
            }
        } else {
            map.put(num, 1);
            if (1 > maxCount) {
                maxElement = num;
                maxCount = 1;
            }
        }
    }
    
    return maxElement;
}
时间复杂度

本算法使用HashMap进行存储,最坏情况下需要遍历整个数组,而HashMap的查询、插入、删除等操作的时间复杂度均为O(1)。 因此,本算法的时间复杂度为O(N)。

代码实现

本算法的完整代码如下:

public int getMaxElement(int[] nums) {
    HashMap<Integer, Integer> map = new HashMap<>();
    int maxElement = nums[0];
    int maxCount = 0;
    
    for (int num : nums) {
        if (map.containsKey(num)) {
            int count = map.get(num) + 1;
            map.put(num, count);
            if (count > maxCount) {
                maxElement = num;
                maxCount = count;
            }
        } else {
            map.put(num, 1);
            if (1 > maxCount) {
                maxElement = num;
                maxCount = 1;
            }
        }
    }
    
    return maxElement;
}
Markdown返回格式
# 门|门 IT 2005 |问题 26

## 问题描述

在一个包含N个元素(N为偶数)的整数数组中,找出出现次数最多的元素。
如果有两个元素出现次数相同,则返回其中任意一个。

## 解题思路

本问题可以使用HashMap进行解决,将每一个元素出现的次数存储在HashMap中,然后遍历HashMap,找出出现次数最多的元素即可。

示例代码如下:

```java
public int getMaxElement(int[] nums) {
    HashMap<Integer, Integer> map = new HashMap<>();
    int maxElement = nums[0];
    int maxCount = 0;
    
    for (int num : nums) {
        if (map.containsKey(num)) {
            int count = map.get(num) + 1;
            map.put(num, count);
            if (count > maxCount) {
                maxElement = num;
                maxCount = count;
            }
        } else {
            map.put(num, 1);
            if (1 > maxCount) {
                maxElement = num;
                maxCount = 1;
            }
        }
    }
    
    return maxElement;
}
时间复杂度

本算法使用HashMap进行存储,最坏情况下需要遍历整个数组,而HashMap的查询、插入、删除等操作的时间复杂度均为O(1)。 因此,本算法的时间复杂度为O(N)。

代码实现

本算法的完整代码如下:

public int getMaxElement(int[] nums) {
    HashMap<Integer, Integer> map = new HashMap<>();
    int maxElement = nums[0];
    int maxCount = 0;
    
    for (int num : nums) {
        if (map.containsKey(num)) {
            int count = map.get(num) + 1;
            map.put(num, count);
            if (count > maxCount) {
                maxElement = num;
                maxCount = count;
            }
        } else {
            map.put(num, 1);
            if (1 > maxCount) {
                maxElement = num;
                maxCount = 1;
            }
        }
    }
    
    return maxElement;
}