按输入序列长度为M,按其数据二进制中 ‘1’ 的个数多少,返回前N多的元素

来源:互联网 发布:mac系统如何倒退 编辑:程序博客网 时间:2024/05/19 11:47
# usr/bin/env python# _*_ coding:utf-8 _*_'''按输入序列长度为M,按其数据二进制中 ‘1’ 的个数多少,返回前N多的元素( 若元素含有的 ‘1’ 个数相同则返回数值较大的那个 )如:525 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 = 0while temp:temp &= (temp-1)num += 1new_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 Resif __name__ == '__main__':M = input()N = input()array = [int(i) for i in raw_input().split()]print getResult(M, N, array)

阅读全文
0 0
原创粉丝点击