201. Bitwise AND of Numbers Range
Tags:
Medium
Skills:
Bitwise
June 24, 2025
04:32 AM
No headings found
Loading content...
Related Posts
Leetcode
No headings found
Related Posts
Leetcode
Problem
Bài toán yêu cầu tính toán phép AND bitwise của tất cả các số trong đoạn [left, right] . Nếu làm theo cách duyệt từng số rồi AND thì sẽ rất chậm với các đoạn lớn. Tuy nhiên, có thể nhận ra môt số tính chất giúp giải nhanh hơn
Approach - Xóa dần bit 1 thấp nhất của right (hoặc high)
Solution
1function rangeBitwiseAnd(left: number, right: number): number {
2 while(left < right) right &= right - 1
3 return right;
4};right = right & (right - 1) ?right - 1 sẽ chuyển bit 1 thấp của right thành 0, và các bit sau nó thành 1right & (right - 1) , bit 1 thấp nhất của right sẽ bị xóa (thành 0), các bit khác giữ nguyên