LeetCode 1133:最大唯一数
markdown复制
LeetCode 1133:最大唯一数
在编程的世界里,我们常常会遇到一些有趣的问题,今天就让我们一起来看看 LeetCode 上的第 1133 题——最大唯一数。
题目描述
给你一个整数数组 A,请找出并返回在该数组中仅出现一次的最大整数。如果不存在这个只出现一次的整数,则返回 -1。
示例
-
示例 1:
- 输入:[5,7,3,9,4,9,8,3,1]
- 输出:8
- 解释:数组中最大的整数是 9,但它在数组中重复出现了。而第二大的整数是 8,它只出现了一次,所以答案是 8。
-
示例 2:
- 输入:[9,9,8,8]
- 输出:-1
- 解释:数组中不存在仅出现一次的整数。
解题思路
为了解决这个问题,我们可以使用哈希映射来记录每个整数的出现次数。以下是详细的步骤:
- 初始化哈希映射和最大值:创建一个 HashMap,用于存储每个整数及其出现的次数,并初始化最大值 max 为 -1。
- 遍历输入数组:使用一个循环遍历数组 nums。
- 更新哈希映射:检查当前整数是否已经在哈希映射中。如果存在,则将其值更新为 2,表示该整数出现了多次;如果不存在,则将其值设为 1,表示该整数第一次出现。
- 查找最大唯一整数:再次遍历哈希映射的键集,检查每个整数的出现次数。如果某个整数的出现次数为 1,则更新 max 为该整数与当前 max 的较大值。
- 返回结果:返回 max,即数组中仅出现一次的最大整数。如果没有这样的整数,则返回 -1。
代码实现
package _1133;
import java.util.HashMap;
public class LeetCode1133 {
public int largestUniqueNumber(int[] nums) {
HashMap<Integer, Integer> set = new HashMap<Integer, Integer>();
int max = -1;
for (int i = 0; i < nums.length; i++) {
if (set.keySet().contains(nums[i])) {
set.put(nums[i], 2);
} else {
set.put(nums[i], 1);
}
}
for (var in : set.keySet()) {
if (set.get(in) == 1) {
max = Math.max(max, in);
}
}
return max;
}
}
通过上述代码,我们就可以轻松地找到数组中仅出现一次的最大整数啦。希望这个解题思路对你有所帮助,如果你还有其他问题或更好的解法,欢迎在评论区留言交流哦!
<p data-source-line="59" class="empty-line final-line end-of-document" style="margin:0;"></p>