跳转至

3866. 找到第一个唯一偶数

题目描述

给你一个整数数组 nums

请你返回一个整数,表示 nums 中出现 恰好 一次的第一个 偶数(以数组下标最早为准)。如果不存在这样的整数,返回 -1。

如果一个整数 x 能被 2 整除,那么它就被认为是 偶数

 

示例 1:

输入: nums = [3,4,2,5,4,6]

输出: 2

解释:

2 和 6 都是偶数,并且它们都恰好出现一次。因为 2 在数组中出现得更早,所以答案是 2。

示例 2:

输入: nums = [4,4]

输出: -1

解释:

没有恰好出现一次的偶数,所以返回 -1。

 

提示:

  • 1 <= nums.length <= 100
  • 1 <= nums[i] <= 100

解法

方法一:计数

我们可以用一个哈希表或数组 \(\textit{cnt}\) 来统计每个整数在数组中出现的次数。然后我们再遍历一次数组,找到第一个满足条件的偶数并返回它。如果没有满足条件的偶数,我们返回 -1。

时间复杂度 \(O(n)\),其中 \(n\) 是数组的长度。空间复杂度 \(O(M)\),其中 \(M\) 是数组中整数的范围(在本题中为 100)。

1
2
3
4
5
6
7
class Solution:
    def firstUniqueEven(self, nums: list[int]) -> int:
        cnt = Counter(nums)
        for x in nums:
            if x % 2 == 0 and cnt[x] == 1:
                return x
        return -1
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
class Solution {
    public int firstUniqueEven(int[] nums) {
        int[] cnt = new int[101];
        for (int x : nums) {
            ++cnt[x];
        }
        for (int x : nums) {
            if (x % 2 == 0 && cnt[x] == 1) {
                return x;
            }
        }
        return -1;
    }
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
class Solution {
public:
    int firstUniqueEven(vector<int>& nums) {
        int cnt[101]{};
        for (int x : nums) {
            ++cnt[x];
        }
        for (int x : nums) {
            if (x % 2 == 0 && cnt[x] == 1) {
                return x;
            }
        }
        return -1;
    }
};
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
func firstUniqueEven(nums []int) int {
    cnt := make([]int, 101)
    for _, x := range nums {
        cnt[x]++
    }
    for _, x := range nums {
        if x%2 == 0 && cnt[x] == 1 {
            return x
        }
    }
    return -1
}
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
function firstUniqueEven(nums: number[]): number {
    const cnt: number[] = new Array(101).fill(0);

    for (const x of nums) {
        cnt[x]++;
    }

    for (const x of nums) {
        if (x % 2 === 0 && cnt[x] === 1) {
            return x;
        }
    }

    return -1;
}

评论