自己想到的解法
class Solution {
public:
bool isPowerOfThree(int n) {
if(n==1)return true;
while(n>1){
if(n%3!=0)return false;
n/=3;
if(n==1)return true;
}
return false;
}
};
n必须限制>1,否则会造成除了3以后若等于1会继续递归,最后结果是3的幂次返回false,然后跟之前一样要考虑1
std::pow解法
for(int x=0;x<=31;x++){
if(double std::pow(3,x)==n){
return true;
}
}
return false;
std::pow是幂次的方法,前一篇提到了会导致执行时间太长,若能算出来具体范围设置i的大小即可解决这个问题,但要注意该数值的范围是大于int和long的,必须定义为double
意外想到的题
这个代码可以判断奇数(大于0)
return (n>0 && (n ^ (n - 1)) == 1);
小于零的变为加一即可
由此推出判断偶数
return (n>=0 && (n ^ (n + 1)) == 1);
同理小于0变为减一即可
最后稍微记录一下自己第一次自己想出来的成就吧
不是炫耀哦
开始学c++不到半个月,很多简单题只能看题解才能做出来,还没找到窍门
希望我能继续努力,有朝一日轻轻松松拿下简单题