📅  最后修改于: 2023-12-03 14:57:48.575000             🧑  作者: Mango
在招聘程序员时,资质和算术能力对于确定应聘者的适合程度非常重要。在问题6中,我们将对应聘者的算术能力进行考察,以检验其在解决问题时的思维逻辑和分析能力。
有一个整数数组,其中每个元素都出现两次,但有一个元素只出现了一次。找出只出现一次的元素。要求时间复杂度为O(n)。
可通过异或运算解决,异或运算符(^)用来判断两个二进制数的每一位是否相同,如果相同则结果为0,不同则为1。
def single_number(nums):
result = 0
for num in nums:
result ^= num
return result
我们将所有数字进行异或运算,最终结果即为只出现一次的数字。如下图所示:
[2, 3, 4, 3, 4]
0010 # 2
^ 0011 # 3
----
0001
0001 # 1
^ 0100 # 4
----
0101
0101 # 5
^ 0011 # 3
----
0110 # 6
时间复杂度为O(n),空间复杂度为O(1)。