iT邦幫忙

2024 iThome 鐵人賽

DAY 22
0

Easy
Related Topics: Bit Manipulation
LeetCode Source

解題想法

十進位數字轉成二進制

之後將1轉成0

0轉成1

結果就是答案

Complexity

Time Complexity: O(logn)
Space Complexity: O(1)

Python

class Solution:
    def findComplement(self, num: int) -> int:
        res = ""

        for i in range(len(bin(num)[2:])):
            if bin(num)[i+2] == "1":
                res += "0"
            else:
                res += "1"

        return int(res, 2)

C++

class Solution {
public:
    int findComplement(int num) {
        string res = "";
        string binary = std::bitset<32>(num).to_string();

        binary = binary.substr(binary.find('1'));

        for (char c : binary) {
            if (c == '1') {
                res += '0';
            } else {
                res += '1';
            }
        }

        return std::stoi(res, nullptr, 2);
    }
};

上一篇
[8/21] 664. Strange Printer
下一篇
[8/23] 592. Fraction Addition and Subtraction
系列文
8月 LeetCode Daily 見聞錄30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言