https://leetcode.com/problems/number-complement/description/?envType=daily-question&envId=2024-08-22
The complement of an integer is the integer you get when you flip all the 0's to 1's and all the 1's to 0's in its binary representation.
- For example, The integer 5 is "101" in binary and its complement is "010" which is the integer 2.
Given an integer num, return its complement.
Example 1:
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.
Example 2:
Input: num = 1
Output: 0
Explanation: The binary representation of 1 is 1 (no leading zero bits), and its complement is 0. So you need to output 0.
Constraints:
- 1 <= num < 231
bit단위의 계산을 하는 문제는 처음이라 난해하다.
1. C
int findComplement(int num) {
unsigned int mask = ~0;
while(num & mask){
mask <<=1;
}
return ~mask & ~num;
}
2. Python
class Solution:
def findComplement(self, num: int) -> int:
bit_length = num.bit_length()
mask = (1 << bit_length) - 1
return num ^ mask
내가 주로 다룰 범위는 아닌 거 같다.
bit 영역은 일단 pass하는 걸로..
'Coding_Practice' 카테고리의 다른 글
Same Tree[E,Tree,Depth-First Search,Breadth-First Search,Binary Tree] (0) | 2024.08.22 |
---|---|
Repeated Substring Pattern[E,String,String Matching] (0) | 2024.08.22 |
Partition List[M,Linked List,Two Pointers] (4) | 2024.08.20 |
Pow(x, n)[M,Math,Recursion] (0) | 2024.08.20 |
Rotate List[Linked List,Two Pointers] (0) | 2024.08.20 |