📅  最后修改于: 2023-12-03 15:37:07.635000             🧑  作者: Mango
给定一个整数数组 nums
,对于其中的每个元素,将其二进制表示反转,然后返回剩余数组中的元素个数。
输入: nums = [10,5,7,2]
输出: 4
对于每个元素,我们可以将其转为二进制字符串,然后进行反转,再将其转回十进制整数。这样就可以得到反转后的数字了。
对于剩余元素的统计,我们只需要对每个反转后的数字进行判断,如果它不是0,就将计数器加一即可。
代码如下:
def reverseBits(num):
binary = bin(num)[2:]
binary = '0' * (32 - len(binary)) + binary
reverse = binary[::-1]
return int(reverse, 2)
def countBits(nums):
count = 0
for num in nums:
if reverseBits(num) != 0:
count += 1
return count
这里的时间复杂度主要取决于将数字转换为二进制字符串的操作,因为我们需要将每个数字的二进制表示都遍历一遍。这个操作的时间复杂度是 $O(n\log n)$。
然后我们还需要对每个二进制字符串进行反转,并将其转回十进制整数。这个操作的时间复杂度是 $O(n)$。
因此,总的时间复杂度是 $O(n\log n)$。
空间复杂度主要取决于存储每个数字的二进制字符串,以及它们的反转结果。这里的空间复杂度是 $O(n)$。