网站跟网页有什么区别,网页微博视频怎么下载,关于单位网站建设的,网站绝对地址目录
1.题目
2.自解
方法1:调用log函数
代码
提交结果
方法2:循环
提交结果
3.优解
方法3:位运算n (n-1) 0
代码
提交结果
方法4:位运算lowbit
代码
提交结果
4.投机取巧的方法
代码
提交结果 1.题目
https://leetcode.cn/problems/power-of-two/?env…目录
1.题目
2.自解
方法1:调用log函数
代码
提交结果
方法2:循环
提交结果
3.优解
方法3:位运算n (n-1) 0
代码
提交结果
方法4:位运算lowbit
代码
提交结果
4.投机取巧的方法
代码
提交结果 1.题目
https://leetcode.cn/problems/power-of-two/?envTypestudy-plan-v2envIdprimers-list 给你一个整数 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 进阶你能够不使用循环/递归解决此问题吗 2.自解
方法1:调用log函数
cpliusplus网的介绍 点我跳转
logarithm n.对数 注意:
1.作用:log函数默认以e为底,则log(x)返回的是的值.
2.参数x的重要提示:x必须大于0
VS2022运行
#include math.h
#include stdio.h
int main()
{double m log(0);printf(%f, m);return 0;
}
运行结果 -inf意为(infinity) 将log(0)改为log(-1)再运行 -nan(ind)表示计算结果为非数值(not a number)或无效数值(invalid)
代码
***给你一个整数 n注意0,-1,-2等也是整数!!!!***
bool isPowerOfTwo(int n)
{if (n0)return 0;int x(int)(log(n)/log(2)*1.0);//换底公式if (pow(2,x)n)return true;elsereturn false;
}
提交结果 方法2:循环
bool isPowerOfTwo(int n)
{if (n0)return false;while(n1){if (n%2)return false;n/2;}return true;
}
提交结果 3.优解
2的幂的二进制数的特点:只有一个位为1,其余全为0
方法3:位运算n (n-1) 0
代码
如果n(n0)为2的幂,一定满足 n (n-1) 0
n (n-1) 直接将 n 二进制表示的最低位 1 移除,若为2的幂,则运算结果为0
bool isPowerOfTwo(int n)
{if (n0 (n (n-1)) 0)return true;elsereturn false;
}其实可以直接返回逻辑运算的结果
bool isPowerOfTwo(int n)
{return n0 (n (n-1)) 0;
}注意: 1.如果以后ifreturn可以写成像下面这样,而且返回类型为bool if (条件)return true;
elsereturn false; 可以简化为 return 条件; 2.如果反过来 if (条件)return false;
elsereturn true; 可以简化为 return !条件; 提交结果 方法4:位运算lowbit
n(-n) 直接获取 n 二进制表示的最低位的 1
代码
bool isPowerOfTwo(int n)
{return n0 (n(n(-n)));
}
提交结果 4.投机取巧的方法
发现n提供的范围为恰为int范围,其中int范围中最大的2的幂数为0x40000000,用0x40000000%n0
代码
bool isPowerOfTwo(int n)
{return n0 (0x40000000%n0);
}
提交结果