LeetCode 3370.仅含置位位的最小整数
题目:
给你一个正整数 n
。
返回 大于等于 n
且二进制表示仅包含 置位 位的 最小 整数 x
。(全是1)
置位 位指的是二进制表示中值为 1
的位。
思路:计算 n 的二进制长度 m,返回长为 m 的全为 1 的二进制数,也就是2^m−1
代码:
class Solution {public int smallestNumber(int n) {int m = 32 - Integer.numberOfLeadingZeros(n);// 1 左移 m 位,相当于 1 * 2^mreturn (1 << m) - 1;}
}
性能:
时间复杂度:O(1)
空间复杂度:O(1)