用位运算解题

简介: 用位运算解题

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)
相关文章
|
8月前
|
算法
算法思想总结:位运算
算法思想总结:位运算
|
8月前
|
消息中间件 Kubernetes NoSQL
剑指offer常见题 - 位运算问题(一)
剑指offer常见题 - 位运算问题(一)
|
8月前
|
消息中间件 Kubernetes NoSQL
剑指offer常见题 - 位运算问题(二)
剑指offer常见题 - 位运算问题(二)
|
8月前
leetcode:231. 2 的幂(位运算)
leetcode:231. 2 的幂(位运算)
32 0
|
8月前
|
算法 索引
Leetcode算法系列| 1. 两数之和(四种解法)
Leetcode算法系列| 1. 两数之和(四种解法)
|
存储 人工智能 算法
【快速排序、归并排序、整数&浮点数二分查找】思路讲解及代码实现
用一篇Blog来讲解下最近学到的快速排序,归并排序,二分查找等处理数据的方式,为日后的刷题打下坚实的基础。
136 0
|
算法
双指针算法、位运算
双指针算法、位运算
75 0
|
人工智能
|
存储 算法 JavaScript
📖位运算在力扣算法问题的妙用
📖位运算在力扣算法问题的妙用
122 1
📖位运算在力扣算法问题的妙用
|
人工智能
归并排序求逆序对 acwing例题代码
归并排序求逆序对 acwing例题代码