
2026-07-04:找到第一个唯一偶数。用go语言,在数组 nums 中寻找这样的数:它是偶数(能被 2 整除),并且在 nums 里只出现一次。请返回满足条件的那个偶数的值,并且以其在数组中的首次出现位置最靠前为准;如果数组中不存在这种偶数,返回 -1。
1 <= nums.length <= 100。
1 <= nums[i] <= 100。
输入: nums = [3,4,2,5,4,6]。
输出: 2。
解释:
2 和 6 都是偶数,并且它们都恰好出现一次。因为 2 在数组中出现得更早,所以答案是 2。
题目来自力扣3866。
函数目标:找出数组里第一个只出现一次的偶数,无符合条件数字返回-1,整体分为两大轮遍历逻辑。
cnt,key存偶数数值,value存该偶数出现次数。cnt[4] 赋值为1。此时映射:{4:1}。cnt[2] 赋值为1。此时映射:{4:1, 2:1}。cnt[4] 在原有基础上加1,变为2。此时映射:{4:2, 2:1}。cnt[6] 赋值为1。最终完整映射:{4:2, 2:1, 6:1}。再次从头到尾遍历原数组,按元素原始先后顺序校验条件,满足则直接返回,不再继续遍历:
cnt[4]=2,出现次数不为1,不符合,跳过。cnt[2]=1,同时满足两个条件:偶数、仅出现一次,符合题目要求。nums = [3,4,2,5,4,6]。firstUniqueEven 函数,传入数组,接收返回结果2。如果第二轮完整走完数组,全程没有找到“偶数且次数为1”的数字,函数最后执行 return -1。
设数组长度为 n(题目约束1 ≤ n ≤ 100)
额外开辟了哈希映射存储偶数计数。数组元素取值范围1~100,偶数最多50个,映射存储元素数量固定有上限,和输入数组长度n无关。 因此总额外空间复杂度:O(1)(常数级空间)
.
package main
import (
"fmt"
)
func firstUniqueEven(nums []int)int {
cnt := map[int]int{}
for _, x := range nums {
if x%2 == 0 {
cnt[x]++
}
}
for _, x := range nums {
if x%2 == 0 && cnt[x] == 1 {
return x
}
}
return-1
}
func main() {
nums := []int{3, 4, 2, 5, 4, 6}
result := firstUniqueEven(nums)
fmt.Println(result)
}

.
# -*-coding:utf-8-*-
def first_unique_even(nums):
cnt = {}
for x in nums:
if x % 2 == 0:
cnt[x] = cnt.get(x, 0) + 1
for x in nums:
if x % 2 == 0 and cnt.get(x) == 1:
return x
return-1
if __name__ == "__main__":
nums = [3, 4, 2, 5, 4, 6]
result = first_unique_even(nums)
print(result)
.
#include <iostream>
#include <vector>
#include <unordered_map>
int firstUniqueEven(const std::vector<int>& nums) {
std::unordered_map<int, int> cnt;
for (int x : nums) {
if (x % 2 == 0) {
cnt[x]++;
}
}
for (int x : nums) {
if (x % 2 == 0 && cnt[x] == 1) {
return x;
}
}
return-1;
}
int main() {
std::vector<int> nums = {3, 4, 2, 5, 4, 6};
int result = firstUniqueEven(nums);
std::cout << result << std::endl;
return0;
}

·
我们相信人工智能为普通人提供了一种“增强工具”,并致力于分享全方位的AI知识。在这里,您可以找到最新的AI科普文章、工具评测、提升效率的秘籍以及行业洞察。 欢迎关注“福大大架构师每日一题”,发消息可获得面试资料,让AI助力您的未来发展。
·