📜  资质| Wipro模拟测试|问题28(1)

📅  最后修改于: 2023-12-03 15:12:14.630000             🧑  作者: Mango

资质 | Wipro 模拟测试 | 问题28

问题描述

在一个数组中查找第一个不重复出现的整数。

例如,对于数组 [4,2,4,5,2,3,1],结果应该是 5

解决方案

我们可以使用一个字典来记录每个元素的出现次数,然后再遍历一遍数组,找到第一个出现次数为 1 的元素。

以下是 Python 实现:

def find_first_unique_number(numbers):
    count = {}
    
    # 统计每个元素的出现次数
    for n in numbers:
        if n in count:
            count[n] += 1
        else:
            count[n] = 1
    
    # 遍历数组,找到第一个出现次数为 1 的元素
    for n in numbers:
        if count[n] == 1:
            return n
    
    return None
测试样例
assert find_first_unique_number([4,2,4,5,2,3,1]) == 5
assert find_first_unique_number([1,2,3,4,5,6,7,8,9,10]) == 1
assert find_first_unique_number([1]) == 1
assert find_first_unique_number([1,1,1,1,1]) == None
assert find_first_unique_number([]) == None
时间复杂度分析

遍历一遍数组统计出现次数的时间复杂度为 O(n),再遍历一遍数组查找第一个出现次数为 1 的元素的时间复杂度也为 O(n),因此总的时间复杂度为 O(n)。

总结

本题是 Wipro 模拟测试中的一道题目,要求我们在一个数组中查找第一个不重复出现的整数。我们可以使用字典来记录每个元素的出现次数,然后再遍历一遍数组,找到第一个出现次数为 1 的元素。时间复杂度为 O(n)。