3370.仅含置位位的最小整数
仅含置位位的最小整数
给你一个正整数 n。
返回 大于等于 n 且二进制表示仅包含 置位 位的 最小 整数 x 。
置位 位指的是二进制表示中值为 1 的位。
示例 1:
输入: n = 5
输出: 7
解释:
7 的二进制表示是 "111"。
示例 2:
输入: n = 10
输出: 15
解释:
15 的二进制表示是 "1111"。
示例 3:
输入: n = 3
输出: 3
解释:
3 的二进制表示是 "11"。
提示:
1 <= n <= 1000
思路
首先找到这个数的二进制位数,然后把不为1的位变成1就行了
bit_width 函数可以找到一个数的位数,但是bit_width() 函数只接受无符号整数类型作为参数,不接受有符号整数。如果 n 是 int 类型(有符号),直接调用 bit_width(n) 会编译错误。
然后找到大于这个数的最大的2的指数,再减一就行了。
代码
1 | class Solution { |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Wuuu!!