476. Number Complement
Văn bản bài toán được dịch từ tiếng Nga theo ngôn ngữ giao diện. Mã không thay đổi.
Дополнение целого числа — это number, которое получается при замене всех 0 на 1 и всех 1 на 0 в его двоичном представлении.
НаVí dụ, số nguyên 5 в двоичной системе — "101", и его дополнение — "010", что соответствует целому числу 2. given số nguyên num, return его дополнение.
Ví dụ:
Input: num = 5
Output: 2
Explanation: The binary representation of 5 is 101 (no leading zero bits), and its complement is 010. So you need to output 2.
C# lời giải
đã khớp/gốcpublic class Solution {
public int FindComplement(int num) {
int bitmask = num;
bitmask |= (bitmask >> 1);
bitmask |= (bitmask >> 2);
bitmask |= (bitmask >> 4);
bitmask |= (bitmask >> 8);
bitmask |= (bitmask >> 16);
return bitmask ^ num;
}
}
C++ lời giải
bản nháp tự động, xem lại trước khi gửi#include <bits/stdc++.h>
using namespace std;
// Auto-generated C++ draft from the C# solution. Review containers, LINQ and helper types before submit.
class Solution {
public:
public int FindComplement(int num) {
int bitmask = num;
bitmask |= (bitmask >> 1);
bitmask |= (bitmask >> 2);
bitmask |= (bitmask >> 4);
bitmask |= (bitmask >> 8);
bitmask |= (bitmask >> 16);
return bitmask ^ num;
}
}
Java lời giải
đã khớp/gốcclass Solution {
public int findComplement(int num) {
int bitmask = num;
bitmask |= (bitmask >> 1);
bitmask |= (bitmask >> 2);
bitmask |= (bitmask >> 4);
bitmask |= (bitmask >> 8);
bitmask |= (bitmask >> 16);
return bitmask ^ num;
}
}
JavaScript lời giải
đã khớp/gốcclass Solution {
findComplement(num) {
let bitmask = num;
bitmask |= (bitmask >> 1);
bitmask |= (bitmask >> 2);
bitmask |= (bitmask >> 4);
bitmask |= (bitmask >> 8);
bitmask |= (bitmask >> 16);
return bitmask ^ num;
}
}
Python lời giải
đã khớp/gốcclass Solution:
def findComplement(self, num: int) -> int:
bitmask = num
bitmask |= (bitmask >> 1)
bitmask |= (bitmask >> 2)
bitmask |= (bitmask >> 4)
bitmask |= (bitmask >> 8)
bitmask |= (bitmask >> 16)
return bitmask ^ num
Go lời giải
đã khớp/gốcpackage main
func findComplement(num int) int {
bitmask := num
bitmask |= (bitmask >> 1)
bitmask |= (bitmask >> 2)
bitmask |= (bitmask >> 4)
bitmask |= (bitmask >> 8)
bitmask |= (bitmask >> 16)
return bitmask ^ num
}
func main() {}
Algorithm
Вычислите длину в битах Đầu vàoного числа: l=⌊log 2 (num)⌋+1.
Постройте битовую маску из 1-битов длины l: bitmask=(1≪l)−1.
return результат операции XOR числа и битовой маски: num⊕bitmask num⊕bitmask.
😎
Vacancies for this task
việc làm đang hoạt động with overlapping task tags are đã hiển thị.
Chưa có việc làm đang hoạt động.