LeetCode|Day29|1009. 十进制整数的反码|Python刷题笔记

LeetCode|Day29|1009. 十进制整数的反码|Python刷题笔记

🗓️ 本文属于【LeetCode 简单题百日计划】系列

👉 点击查看系列总目录 >>


📌 题目简介

题号:1009. 十进制整数的反码
难度:简单
题目链接:点击跳转


🧾 题目描述

给你一个十进制整数 n,返回其二进制表示的反码所对应的十进制整数。

反码规则是:把二进制表示中每一位 0110

示例:

复制代码
输入:n = 5(即二进制为 101)
输出:2(反码为 010,等于十进制的 2)

💡 解法:构造掩码异或

python 复制代码
class Solution:
    def bitwiseComplement(self, n: int) -> int:
        if n == 0:
            return 1
        mask = 1
        while mask <= n:
            mask = (mask << 1) | 1  # 构造全为1的掩码
        return n ^ mask  # 异或得到反码

🧠 我的理解

  • 使用掩码构造技巧:构造一个比 n 大,且所有位都是 1 的数;
  • 利用 ^ 异或运算:相同为 0,不同为 1,从而实现反转;
  • 特殊处理边界:0 的反码是 1。

📌 基础语法复习:

  • << 左移位运算符,相当于乘 2;
  • | 按位或运算;
  • ^ 异或运算符,常用于翻转二进制;
  • 位运算是刷题中提高性能的重要工具。

📌 返回总目录:点我回目录