# usr/bin/env python
# _*_ coding:utf-8 _*_
'''
按输入序列长度为M,按其数据二进制中 ‘1’ 的个数多少,返回前N多的元素
( 若元素含有的 ‘1’ 个数相同则返回数值较大的那个 )
如:
5
2
5 3 7 1 2
返回:
7 5
'''
def getResult(M, N, array):
new_array = []
bin_array = [bin(i) for i in array] # 二进制转换
# # 获取数组中对应位置二进制中‘1’的个数 方法一
# for i in range(M):
# new_array.append(bin_array[i].count('1'))
# 获取数组中对应位置二进制中‘1’的个数 方法二
for i in range(M):
temp = array[i]
num = 0
while temp:
temp &= (temp-1)
num += 1
new_array.append(num)
# 获取二进制中‘1’个数前N多的元素
Res = []
for j in range(N):
# 获取当前最多
res = array[new_array.index(max(new_array))]
# 删除最多
new_array.remove(max(new_array))
# 删除最多
array.remove(res)
# 保存结果
Res.append(res)
return Res
if __name__ == '__main__':
M = input()
N = input()
array = [int(i) for i in raw_input().split()]
print getResult(M, N, array)按输入序列长度为M,按其数据二进制中 ‘1’ 的个数多少,返回前N多的元素
最新推荐文章于 2022-06-17 18:38:56 发布
本文介绍了一种基于二进制位‘1’计数的排序算法,该算法可以找出输入序列中二进制表示包含最多‘1’的前N个元素,并在数量相同时选择数值较大的元素。通过两种不同的计数方法实现,提供了完整的Python代码示例。
198

被折叠的 条评论
为什么被折叠?



