纯图片网站源码wish网站应该怎么做
web/
2025/10/7 8:09:27/
文章来源:
纯图片网站源码,wish网站应该怎么做,河南 医院 网站建设,搭建游戏服务器1. 问题描述
给出2n1个非负整数元素的数组#xff0c;除其中一个数字之外#xff0c;其他每个数字均出现两次#xff0c;找到这个数字。
2. 问题示例
给出[1#xff0c;2#xff0c;2#xff0c;1#xff0c;3#xff0c;4#xff0c;3]#xff0c;返回4。
3. 代…1. 问题描述
给出2n1个非负整数元素的数组除其中一个数字之外其他每个数字均出现两次找到这个数字。
2. 问题示例
给出[1221343]返回4。
3. 代码实现
使用异或运算XOR实现
def find_single_number(nums):result 0for num in nums:result ^ numreturn result# 测试示例
nums [1, 2, 2, 1, 3, 4, 3]
result find_single_number(nums)
print(result)
该算法的思路是由于除了一个数字之外其他数字都出现了两次所以对数组中的所有数字进行异或运算最后的结果就是那个只出现一次的数字。异或运算具有以下性质
任何数与 0 进行异或运算结果仍然是该数本身。任何数与自身进行异或运算结果为 0。
因此将数组中的所有数字进行异或运算最后得到的结果就是那个只出现一次的数字。
在示例中数组 [1, 2, 2, 1, 3, 4, 3] 中所有数字进行异或运算的结果为 4即为只出现一次的数字。 使用哈希表实现
def find_single_number(nums):hash_table {}for num in nums:if num in hash_table:hash_table[num] 1else:hash_table[num] 1for num, count in hash_table.items():if count 1:return num# 测试示例
nums [1, 2, 2, 1, 3]
result find_single_number(nums)
print(result)
该算法的思路是使用哈希表记录每个数字出现的次数然后遍历哈希表找到只出现一次的数字。
在示例中数组 [1, 2, 2, 1, 3] 中数字 3 只出现了一次因此返回结果为 3。相比于异或运算的方法使用哈希表的方法需要额外的空间来存储哈希表但时间复杂度相同都为 O(n)。 使用数学方法实现
def find_single_number(nums):return 2 * sum(set(nums)) - sum(nums)# 测试示例
nums [1, 2, 2, 1, 3, 4, 3]
result find_single_number(nums)
print(result)该算法的思路是先将数组中的所有数字去重得到不重复的数字集合然后将集合中的数字乘以 2再减去数组中所有数字的和最终得到的结果就是只出现一次的数字。
在示例中数组 [1, 2, 2, 1, 3, 4, 3] 中数字 4 只出现了一次因此返回结果为 4。相比于异或运算和哈希表的方法使用数学方法的代码更简洁但是需要进行额外的数学计算可能会有一定的精度误差。。 使用集合方法实现
def find_single_number(nums):num_set set()for num in nums:if num in num_set:num_set.remove(num)else:num_set.add(num)return num_set.pop()# 测试示例
nums [1, 2, 2, 1, 3, 4, 3]
result find_single_number(nums)
print(result)该算法的思路是使用一个集合来存储出现过一次的数字遍历数组中的每个数字如果数字已经在集合中存在则从集合中移除否则将数字添加到集合中。最后集合中剩下的元素就是只出现一次的数字。
在示例中数组 [1, 2, 2, 1, 3, 4, 3] 中数字 4 只出现了一次因此返回结果为 4。相比于其他方法使用集合的方法不需要进行额外的位运算或数学计算空间复杂度为 O(n)时间复杂度也为 O(n)。
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/88366.shtml
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!