Featured image of post 算法训练——仅含置位位的最小整数

算法训练——仅含置位位的最小整数

算法练习题

题目描述

给你一个正整数 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

解题过程

思路

本题中x存在一定规律,即$x=2^k-1$,根据公式得出x的迭代公式为$x=x*2+1$,即可得出结果。

代码实现

java

1
2
3
4
5
6
7
8
class Solution {
    public int smallestNumber(int n) {
        int x = 1;
        while (x < n)
            x = x * 2 + 1;
        return x;
    }
}

c

与java类似,不再赘述。

使用 Hugo 构建
主题 StackJimmy 设计
math: 算法训练——仅含置位位的最小整数