class Solution {
public:
int sum(int num1, int num2) {
return num1+num2;
}
};
直接返回即可。
class Solution {
public:
int mySqrt(int x) {
return (int)sqrt(x);
}
};
先暂且使用库函数实现。
class Solution {
public:
int mySqrt(int x) {
return (int)sqrt(x);
}
};
同上
class Solution {
public:
bool isPerfectSquare(int num) {
long long ans = 0;
for(int i = 0;i<=num;++i){
if((long long)i*i<=num){
ans = i*i;
}else break;
}
return ans==num;
}
};
注意数据溢出的问题,i*i 要转为 long long。
class Solution {
public:
double myPow(double x, int n) {
return pow(x,n);
}
};
二分快速幂日后学习。
class Solution {
public:
double myPow(double x, int n) {
return pow(x,n);
}
};
同上
class Solution {
public:
bool isPowerOfTwo(int n) {
return n>0&&(n&(n-1))==0;
}
};
一个整数如果是 2 的幂次方必然满足这个数是大于 0 的,而且其写为二进制之后有如下的形式 10000…00 所以使其减去 1 后会变为 011111…111 的形式,那么两数位与之后必然等于 0 。
class Solution {
public:
bool isPowerOfThree(int n) {
while(n!=0&&n%3==0){
n/=3;
}
return n==1;
}
};
满足是 3 的幂的数首先肯定能被整除,其次当其不断除去 3 之后,最终一定会等于 1 。
class Solution {
public:
bool isPowerOfFour(int n) {
while(n&&n%4==0){
n/=4;
}
return n==1;
}
};
同上。
class Solution {
public:
vector<int> swapNumbers(vector<int>& numbers) {
vector<int> ret;
ret.push_back(numbers[1]);
ret.push_back(numbers[0]);
return ret;
}
};
这里练习一下使用 vector 类,实际上可以直接使用位运算。