ARTICLE DETAIL

资讯详情

深耕网站建设、视觉设计与SEO优化的一线实战洞察。

LeeCode231. 2的幂

LeeCode231. 2的幂

给你一个整数n,请你判断该整数是否是 2 的幂次方。如果是,返回true;否则,返回false

如果存在一个整数x使得n == 2x,则认为n是 2 的幂次方。

示例 1:

输入:n = 1输出:true解释:20 = 1

示例 2:

输入:n = 16输出:true解释:24 = 16

示例 3:

输入:n = 3输出:false

提示:

  • -231 <= n <= 231 - 1

进阶:你能够不使用循环/递归解决此问题吗?

答案&测试代码:

void testLeeCode231(void) { // 2的幂 class Solution { public: bool isPowerOfTwo(int n) { if (n <= 0) return false; // 思路: 转化为二进制,如果只有一个1,则为2的幂. int count = 0; for (;n; n >>= 1) { if (n & 1) count++; if (count > 1) return false; } //std::cout << "count = " << count << std::endl; return count == 1; } }; // test Solution solution; std::cout << std::format("isPowerOfTwo({0}), res: {1}", 1, solution.isPowerOfTwo(1)) << std::endl; }

打印:

ok. 提交到LeeCode:

ok.

返回列表