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(∗)