二进制权重

题目描述

一个数的二进制权重被定义为一个十进制数表示为二进制数中 '1' 的个数。例如:

1 的二进制权重就是 1

1717 表示为二进制数为 11010110101,所以二进制权重为 7

现在给出一个正整数 N,返回最小的一个大于 N 并且二进制权重跟 N 相同的数。

输入描述:

输入一个数 N(1 <= N <= 1,000,000,000)

输出描述:

输出一个数,即为最小的一个大于 N 并且二进制权重跟 N 相同的数

输入例子:

1717

输出例子:

1718

自己的解答

正确但是超时的解答

尝试优化的代码

由于自己当时笔试的时候写出来的版本只能通过 50% 的例子,所以下面先写个测试代码,再来改进自己的优化算法:

通过测试的代码,不知道效率如何

Last updated

Was this helpful?