随意的目录
- 一、今日知识点总结
- 二、今日战绩
- 三、今日解题
- [剑指 Offer 64. 求1+2+…+n](https://leetcode-cn.com/problems/qiu-12n-lcof/)
- [231. 2 的幂](https://leetcode-cn.com/problems/power-of-two/)
- [326. 3 的幂](https://leetcode-cn.com/problems/power-of-three/)
- [342. 4的幂](https://leetcode-cn.com/problems/power-of-four/)
- [1492. n 的第 k 个因子](https://leetcode-cn.com/problems/the-kth-factor-of-n/)
- [367. 有效的完全平方数](https://leetcode-cn.com/problems/valid-perfect-square/)
- 四、今日收获
- 五、今日疑问
- 六、其他参考
一、今日知识点总结
1 两种循环结构:for 和 while
for
for(循环初始化表达式; 条件表达式; 执行表达式){
循环体
}
for死循环
for(int i = 0; ; ++i){ //条件表达式不存在或逻辑判断始终满足 ==> 没有结束条件
//...
}
循环体和执行表达式合并问题
int sum = 0;
for(int i = 0;i < 10; ){
sum += i;
i++; //循环表达式
}
2 如何选择 for 和 while?
二、今日战绩
刷题数:6题
三、今日解题
剑指 Offer 64. 求1+2+…+n
int sumNums(int n){
// 方法1:等差数列求和
// return (1+n)*n/2;
// 方法2:循环
int sum = 0;
for(int i = 1;i<n+1;i++){
sum += i;
}
return sum;
}
231. 2 的幂
bool isPowerOfTwo(int n){
if(n <= 0){ //必定不是2的次幂
return false;
}
if(n == 1){ //2的0次幂
return true;
}
int result = 1; //把这个值得类型改为unsigned更合理,因为一定是非负的
for(int i = 1;i<=31;i++){ 无符号数的范围最大是2^31 - 1,4^16 = (2^2)^16 = 2^(2*16) = 2^32
//如果直接弄个死循环就行,当结果大于n就跳出,和这个写法的对比是?
if((result *= 2) == n){ //从2的1次幂开比较
return true;
}
}
return false;
}
326. 3 的幂
bool isPowerOfThree(int n){
if(n <= 0){
return false;
}
if(n == 1){
return true;
}
unsigned int k = 1; //对比上一道题看,把这个值得类型改为unsigned更合理,因为一定是非负的
while(1){
if((k*=3) == n){
return true;
}else if( k > n){
return false;
}
}
}
342. 4的幂
//这个解法,自定义一些数是可以通过的,但提交时测试集不通过
bool isPowerOfFour(int n){
if(n == 1){
return true;
}
if( n <= 0 ){
return false;
}
unsigned k = 1;
while(1){
if( (k *= 4) == n ){
return true;
}
if(k > n){
return false;
}
}
return false;
}
//调整后
bool isPowerOfFour(int n){
if(n == 1){
return true;
}
if( n <= 0 ){
return false;
}
unsigned k = 1;
for(int i = 1;i<16;i++){ //无符号数的范围最大是2^31 - 1,4^16 = (2^2)^16 = 2^(2*16) = 2^32
if( ( k *= 4 ) == n){
return true;
}
}
return false;
}
过啦~~~~!!!
1492. n 的第 k 个因子
//通过while来循环
int kthFactor(int n, int k){
int cnt = 0;//当前的因子
int i = 0;
while(1){
i++; //从0开始递增
if(n % i == 0 ){ //当前i为因子
cnt ++;//因子的index
if(cnt == k){
return i;
}
}
if(i == n){
break;
}
}
return -1;
}
//通过for来循环
int kthFactor(int n, int k){
int i = 1;
int cnt = 0;
for(;i<=n;i++){
if(n % i ==0){
cnt++;
if(cnt == k){
return i;
}
}
}
return -1;
}
367. 有效的完全平方数
bool isPerfectSquare(int num){
int i;
long long p;
for(i=0;;i++){
p = (long long)i*i;
if(p == num){
return true;
}
if(p>num){
return false;
}
}
return false;
}
bool isPerfectSquare(int num){
int i = 1;
long long p;
while(1){
p = (long long) i*i;
if(p == num){
return true;
}
if(p > num){
return false;
}
i++;
}
}
四、今日收获
五、今日疑问
六、其他参考
暂无