TA的每日心情 | 奋斗 2021-4-20 05:43 |
---|
签到天数: 300 天 [LV.8]合体
|
我把你的题目copy进去,这次ChatGPT明显是审题不周。
题目:一个数组长度为[3n + 1],包括n+1个数字,其中只有一个数字是单独出现,其他数字都会出现三次,例如[1, 2, 2,1, 1, 2, 3] 。请找出只出现一次的数字。
方法一:通过哈希表来实现。我们可以遍历数组,用哈希表记录每个数字出现的次数,如果某个数字只出现了一次,那么就找到了答案。
方法二:使用异或运算。对于每个数字,我们可以使用异或运算将其与之前的数字进行比较,如果最终的结果是非零的,那么就找到了只出现一次的数字。
用python实现这个程序
以下是用 Python 实现这个程序的示例代码:
# 读取数据
arr = [1, 2, 2,1, 1, 2, 3]
# 方法一:使用哈希表来实现
def find_single_with_hash(arr):
# 初始化一个哈希表
hash_map = {}
for ele in arr:
if ele in hash_map:
hash_map[ele] += 1
else:
hash_map[ele] = 1
# 遍历哈希表,找出只出现一次的数字
for k, v in hash_map.items():
if v == 1:
return k
return None
# 方法二:使用异或运算
def find_single_with_xor(arr):
res = 0
for ele in arr:
res ^= ele
return res
# 测试
print(find_single_with_hash(arr))
print(find_single_with_xor(arr))
|
|