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
    • 解释:数组中不存在仅出现一次的整数。

解题思路

为了解决这个问题,我们可以使用哈希映射来记录每个整数的出现次数。以下是详细的步骤:

  1. 初始化哈希映射和最大值:创建一个 HashMap,用于存储每个整数及其出现的次数,并初始化最大值 max 为 -1。
  2. 遍历输入数组:使用一个循环遍历数组 nums。
  3. 更新哈希映射:检查当前整数是否已经在哈希映射中。如果存在,则将其值更新为 2,表示该整数出现了多次;如果不存在,则将其值设为 1,表示该整数第一次出现。
  4. 查找最大唯一整数:再次遍历哈希映射的键集,检查每个整数的出现次数。如果某个整数的出现次数为 1,则更新 max 为该整数与当前 max 的较大值。
  5. 返回结果:返回 max,即数组中仅出现一次的最大整数。如果没有这样的整数,则返回 -1。

代码实现

LeetCode 1133:最大唯一数_第1张图片

package _1133;

import java.util.HashMap;

public class LeetCode1133 {
    public int largestUniqueNumber(int[] nums) {
        HashMap set = new HashMap();
        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;
    }
}
通过上述代码,我们就可以轻松地找到数组中仅出现一次的最大整数啦。希望这个解题思路对你有所帮助,如果你还有其他问题或更好的解法,欢迎在评论区留言交流哦!


你可能感兴趣的:(LeetCode,leetcode,数据结构,算法)