[学习报告]《LeetCode零基础指南》(第二讲) 循环

一、今日知识点总结

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题

image-20220315122956159

三、今日解题

剑指 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的幂

image-20220315115932113

//这个解法,自定义一些数是可以通过的,但提交时测试集不通过
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;
}

image-20220315120507510

过啦~~~~!!!

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++;
    }
}

四、今日收获

五、今日疑问

image-20220315120204019

六、其他参考

暂无

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

忘词木头人

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值