1、题目描述
2、解题思路
解法一:排序+倒叙遍历
1、把数组进行从小到大排序;
2、从数组的最尾端元素开始遍历,如果遍历到的元素前面和后面都和它不一样,则它就算仅出现一次的最大整数‘
3、如果遍历完都找不到一个和前后都不一样的元素,则返回 -1;
解法二:哈希表
1、把数组中元素和出现次数统计并保存到 HashMap 中;
2、遍历 map,从次数为 1 的元素中选择最大的返回;
3、解题代码
class Solution {
public int largestUniqueNumber(int[] A) {
int target = -1;
Map<Integer, Integer> map = new HashMap<>();
for (int n : A) {
if (map.containsKey(n)) {
map.put(n, map.get(n) + 1);
} else {
map.put(n, 1);
}
}
Set<Integer> keySet = map.keySet();
for (Integer key : keySet) {
if (map.get(key) == 1 && target < key) {
target = key;
}
}
return target;
}
}