1133. 最大唯一数

题目

给你一个整数数组 A,请找出并返回在该数组中仅出现一次的最大整数。

如果不存在这个只出现一次的整数,则返回 -1。

示例1:

1
2
3
4
输入:[5,7,3,9,4,9,8,3,1]
输出:8
解释:
数组中最大的整数是 9,但它在数组中重复出现了。而第二大的整数是 8,它只出现了一次,所以答案是 8。

示例2:

1
2
3
4
输入:[9,9,8,8]
输出:-1
解释:
数组中不存在仅出现一次的整数。

示例3:

1
2
3
输入:10
输出:5
解释:10 的二进制表示为 "1010",其二进制反码为 "0101",也就是十进制中的 5 。

提示:

  1. 1 <= A.length <= 2000
  2. 0 <= A[i] <= 1000

解法

解法一:

计数法

java

1
2
3
4
5
6
7
8
9
10
11
12
13
public int largestUniqueNumber(int[] A) {
int[] count = new int[2001];
for (int a : A) {
count[a]++;
}

for (int i = count.length - 1;i > 0;i--) {
if (1 == count[i]) {
return i;
}
}
return -1;
}

解法二:

借助HashMap

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public int largestUniqueNumber(int[] A) {
HashMap<Integer, Integer> map = new HashMap<>();
for (int num : A) {
if (map.containsKey(num)) {
map.put(num, map.get(num) + 1);
} else {
map.put(num, 1);
}
}

int maxNum = -1;
for (Map.Entry<Integer, Integer> entry : map.entrySet()) {
if (entry.getValue() == 1) {
maxNum = Math.max(maxNum, entry.getKey());
}
}
return maxNum;
}
0%