电子商务网站建设商城网站常用的网络推广方法有哪些
异或运算(XOR)
异或运算是一种位运算,通常用符号 ^ 表示。它的运算规则如下:
- 如果两个二进制位相同,结果为
0。 - 如果两个二进制位不同,结果为
1。
具体来说,对于两个二进制位 a 和 b,异或运算的结果如下:
a | b | a ^ b |
|---|---|---|
| 0 | 0 | 0 |
| 0 | 1 | 1 |
| 1 | 0 | 1 |
| 1 | 1 | 0 |
异或运算的特性
- 交换律:
a ^ b = b ^ a - 结合律:
(a ^ b) ^ c = a ^ (b ^ c) - 自反性:
a ^ a = 0 - 与零的异或:
a ^ 0 = a
--------------------------------------------以下是题目----------------------------
题目 :问题描述
在一个班级中,每位同学都拿到了一张卡片,上面有一个整数。有趣的是,除了一个数字之外,所有的数字都恰好出现了两次。现在需要你帮助班长小C快速找到那个拿了独特数字卡片的同学手上的数字是什么。
要求:
- 设计一个算法,使其时间复杂度为 O(n),其中 n 是班级的人数。
- 尽量减少额外空间的使用,以体现你的算法优化能力。
测试样例
样例1:
输入:
cards = [1, 1, 2, 2, 3, 3, 4, 5, 5]输出:4解释:拿到数字 4 的同学是唯一一个没有配对的。
样例2:
输入:
cards = [0, 1, 0, 1, 2]输出:2解释:数字 2 只出现一次,是独特的卡片。
完整的代码
def solution(cards):# 初始化一个变量来存储异或的结果result = 0# 遍历数组中的每一个元素for card in cards:# 对每一个元素进行异或运算result ^= card# 返回最终的结果return resultif __name__ == "__main__":# 添加你的测试用例print(solution([1, 1, 2, 2, 3, 3, 4, 5, 5]) )print(solution([0, 1, 0, 1, 2]))print(solution([7, 3, 3, 7, 10]))
解释
result = 0:初始化一个变量result为 0,用于存储异或运算的结果。for card in cards:遍历数组中的每一个元素。result ^= card:对每一个元素进行异或运算,并将结果存储在result中。return result:返回最终的结果,即唯一出现一次的数字。
这个代码可以正确地找到数组中唯一出现一次的数字,并且满足题目要求的时间复杂度 O(n) 和空间复杂度 O(1)。
如果你有任何问题或需要进一步的帮助,请告诉我!
