📅  最后修改于: 2023-12-03 15:28:48.145000             🧑  作者: Mango
在一个包含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;
}
# 门|门 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;
}