共计 510 个字符,预计需要花费 2 分钟才能阅读完成。
class Solution:
def minChanges(self, n: int, k: int) -> int:
binary_n = format(n, 'b')
binary_k = format(k, 'b')
res=0
# 将两个二进制字符串长度对齐,前面补零
max_len = max(len(binary_n), len(binary_k))
binary_n = binary_n.zfill(max_len)
binary_k = binary_k.zfill(max_len)
if binary_n==binary_k:
return 0
for i,j in zip(binary_n,binary_k):
if i==j:
continue
if i!=j and i=='1':
res+=1
continue
else:
return -1
return res
思路
把两个数字变成 python 的字符串,然后取较大的长度,短的补齐 0
然后诸位遍历,相同跳过,不同看第一个 n 的二进制是不是 1,是 1 的话就答案 +1,跳过,不是就直接返回 -1
复杂度
- 时间复杂度: O(∗)O(*)O(∗)
- 空间复杂度: O(∗)O(*)O(∗)
原文地址: 力扣每日一题 2024/11/2 3226. 使两个整数相等的位更改次数
正文完