用位运算解题

简介: 用位运算解题

1-1000这1000个数放在含有1001个元素的数组中,只有唯一个元素重复,其他均只出现一次。每个数组元素,只能访问一次,设计一个算法,将其找出来,不用辅助储存空间,能否设计一个算发实现

位运算解题


import random
a = []
n = 1001
for i in range(n-1):
    a.append(i+1)
print(a)
b = random.randint(0,n-2)
a.insert(a[b],random.randint(1,n-1))
print(a)
x1 = 0
for i in range(n):
    x1 = x1^i
for i in range(n):
    x1 = x1^a[i]
print(x1)


验证方法,用辅助储存空间


import random
a = []
n = 1001
for i in range(n-1):
    a.append(i+1)
print(a)
b = random.randint(0,n-2)
a.insert(a[b],random.randint(1,n-1))
print(a)
print("=====================")
a1 = []
for i in range(n):
    a1.append(0)       # 创建一个长度为n 的数组,所有的值都为0
for i in range(n):
    a1[a[i]] +=1       # 遍历数组a 数组[i]的值对应数组a1的位置,将该位置的值加1
for i in range(n):
    if a1[i] == 2:
        print(i)
        break


一个数组里除了某一个数字之外,其他的数字都出现了两次,请写一个程序找出这个数只出现一次的数字


# 两个相同的数做位运算结果为0
import random
n = 10
a = []
for i in range(n):
    a.append(i+1)
    a.append(i+1)
b = random.randint(1,2*n-1)
a.pop(b)
print(a)
x = 0
for i in a:
    x = x^i
print(x)
相关文章
|
6月前
|
算法
算法思想总结:位运算
算法思想总结:位运算
|
6月前
|
测试技术 Windows
【动态规划】【位运算】1787. 使所有区间的异或结果为零
【动态规划】【位运算】1787. 使所有区间的异或结果为零
|
6月前
|
消息中间件 Kubernetes NoSQL
剑指offer常见题 - 位运算问题(二)
剑指offer常见题 - 位运算问题(二)
|
6月前
|
消息中间件 Kubernetes NoSQL
剑指offer常见题 - 位运算问题(一)
剑指offer常见题 - 位运算问题(一)
|
6月前
|
索引 容器
双指针解决leetcode1两数之和
双指针解决leetcode1两数之和
41 0
|
6月前
|
算法 索引
Leetcode算法系列| 1. 两数之和(四种解法)
Leetcode算法系列| 1. 两数之和(四种解法)
|
算法 C语言 C++
【位运算问题】Leetcode 136、137、260问题详解及代码实现
此外,任意一个数异或0都为他本身 (这从二进制编码来理解也很好理解,0的二进制编码全为0,任意一个数与其异或不同的就是若干位的1)
90 0
|
算法
双指针算法、位运算
双指针算法、位运算
67 0
|
机器学习/深度学习 C++
|
算法
leetcode-每日一题1217. 玩筹码(贪心+位运算)
判断元素的奇偶性,把奇数下标记录在odd 元素里
73 0
leetcode-每日一题1217. 玩筹码(贪心+位运算)