1. 程式人生 > >leetcode 476. 數字的補數(Number Complement)

leetcode 476. 數字的補數(Number Complement)

沒有 urn 解釋 輸出 數字 += clas num str

目錄

  • 題目描述:
  • 示例 1:
  • 示例 2:
  • 解法:

題目描述:

給定一個正整數,輸出它的補數。補數是對該數的二進制表示取反。

註意:

  1. 給定的整數保證在32位帶符號整數的範圍內。
  2. 你可以假定二進制數不包含前導零位。

示例 1:

輸入: 
    5
輸出: 
    2
解釋: 
    5的二進制表示為101(沒有前導零位),其補數為010。所以你需要輸出2。

示例 2:

輸入: 
    1
輸出: 
    0
解釋: 
    1的二進制表示為1(沒有前導零位),其補數為0。所以你需要輸出0。

解法:

class Solution {
public:
    int findComplement(int num) {
        int multi = 1;
        int res = 0;
        while(num != 0){
            if((num&1) == 0){
                res += multi;
            }
            num >>= 1;
            multi <<= 1;
        }
        return res;
    }
};

leetcode 476. 數字的補數(Number Complement)