【解题报告】《LeetCode零基础指南》(第三讲) 循环(1)

简介: 【解题报告】《LeetCode零基础指南》(第三讲) 循环(1)

☘前言☘

今天是九日集训第二天,我会记录一下学习内容和题解,争当课代表0.0.

注意!!!!题解的解法一是今天要掌握的解法,解法2是学有余力再研究,涉及到后面知识点0.0

链接:《LeetCode零基础指南》(第二讲) 函数

另外:昨天讲过的知识点我今天不会再放有需要请查看:

【解题报告】《LeetCode零基础指南》(第二讲) 函数


🧑🏻作者简介:一个从工业设计改行学嵌入式的年轻人

✨联系方式:2201891280(QQ)

⏳全文大约阅读时间: 15min


全文目录

 ☘前言☘

 🎁主要知识点梳理

           📝循环的使用

                     🥨1.语法规则

                     🥞2.简单应用

                     🍔3.初始化表达式

                     🥙4.条件表达式

                     🌮5.执行表达式

 🍗课后习题

          剑指 Offer 64. 求1+2+…+n

          231. 2 的幂

          326. 3 的幂

          342. 4的幂

          1492. n 的第 k 个因子

          367. 有效的完全平方数

🎁主要知识点梳理

📝循环的使用

在C/C++语言中有两种结构:while和for,但是在很多情况下,两者没有太多本质差别,所以我们学习相对应用更方便的for语句。


🥨1.语法规则

for语句的表现形式是:


for(循环初始化表达式;循环条件表达式;循环执行表达式){
  循环体;
}


它的运行过程为


首先,执行循环初始化表达式,这个只会执行一次!!

然后,执行循环条件表达式,若值为真,则执行循环体,否则结束。

接着执行循环体后执行之循环执行表达式。

重复执行2、3直到2为假跳出循环。

ae52ac4fb100ff1b9566f0cc55f201c.png

🥞2.简单应用

下面的程序演示了一个简单的1+2+…+n的值求解


int sumNums(int n){             // 入口函数传参为n
   int i;                      // 声明一个变量
   int sum = 0;                // 作为返回的值初始化为0
   for(i = 1; i <= n; ++i) {   // 循环
       sum += i;               // 循环体
   }
   return sum;                 // 返回结果
}


🍔3.初始化表达式

3.1 初始化表达式外置


这里就是讲初始化表达式提到for循环外面


int sumNums(int n){             // 入口函数传参为n
   int i = 1;                      // 声明一个变量
   int sum = 0;                // 作为返回的值初始化为0
   for(; i <= n; ++i) {   // 循环
       sum += i;               // 循环体
   }
   return sum;                 // 返回结果
}


3.2 初始化表达式内置


这里就是可以直接进行初始化和赋值。但是这样使用for循环执行完之后会直接进行销毁变量。所以这个程序是错的!!!


int sumNums(int n){             // 入口函数传参为n
   for(int i = 1, sum = 0; i <= n; ++i) {   // 循环
       sum += i;               // 循环体
   }
   return sum;                 // 返回结果
}


3.3 初始化表达式的正确用法


为了之后还能使用变量,就需要在外面声明。


int sumNums(int n){             // 入口函数传参为n
   int i,sum;
   for(i = 1, sum = 0; i <= n; ++i) {   // 循环
       sum += i;               // 循环体
   }
   return sum;                 // 返回结果
}


🥙4.条件表达式

条件表达式可以省略,但是会是个死循环,下面的程序必超时。


int sumNums(int n){             // 入口函数传参为n
   int i = 1;                      // 声明一个变量
   int sum = 0;                // 作为返回的值初始化为0
   for(;; ++i) {   // 循环
       sum += i;               // 循环体
   }
   return sum;                 // 返回结果
}


🌮5.执行表达式

它是结构体执行完之后加的一部分内容,本身可以放在循环体内。


int sumNums(int n){             // 入口函数传参为n
   int i = 1;                      // 声明一个变量
   int sum = 0;                // 作为返回的值初始化为0
   for(;i<= n; ) {   // 循环
       sum += i;               // 循环体
       i++;
   }
   return sum;                 // 返回结果
}


🍗课后习题

剑指 Offer 64. 求1+2+…+n

剑指 Offer 64. 求1+2+…+n

题目描述


求1+2+...+n,要求不能使用乘除法、for、while、if、else、switch、case等关键字及条件判断语句(A?B:C)。


思路1


管那么多,循环冲!不解释,知识点有。


int sumNums(int n){           
    int i;                      
    int sum = 0;               
    for(i = 1; i <= n; ++i) {   
        sum += i;              
    }
    return sum;                
}



思路2


没限制递归呀。递归冲!


int sumNums(int n){
    if(n == 1) return 1;//递归出口
    return n + sumNums(n - 1); //下一层递归
}


相关文章
|
1月前
|
存储 算法
LeetCode刷题---75. 颜色分类(双指针,循环不变量)
LeetCode刷题---75. 颜色分类(双指针,循环不变量)
|
7月前
|
算法
LeetCode 37 解数独 循环+回溯算法
LeetCode 37 解数独 循环+回溯算法
38 0
|
Java
java学习第四天笔记-流程控制语句-分支结构82-判断和循环次数-回文数leetcode求商和余数
java学习第四天笔记-流程控制语句-分支结构82-判断和循环次数-回文数leetcode求商和余数
59 0
java学习第四天笔记-流程控制语句-分支结构82-判断和循环次数-回文数leetcode求商和余数
|
Java
java学习第四天笔记-流程控制语句-分支结构81-判断和循环次数-回文数leetcode
java学习第四天笔记-流程控制语句-分支结构81-判断和循环次数-回文数leetcode
54 0
java学习第四天笔记-流程控制语句-分支结构81-判断和循环次数-回文数leetcode
[学习报告]《LeetCode零基础指南》(第二讲)循环
[学习报告]《LeetCode零基础指南》(第二讲)循环
77 0
[学习报告]《LeetCode零基础指南》(第二讲)循环
|
机器学习/深度学习 算法
【刷穿 LeetCode】检测「环形数组是否存在循环」的三种方式:「朴素模拟」&「遍历标记(含优化)」
【刷穿 LeetCode】检测「环形数组是否存在循环」的三种方式:「朴素模拟」&「遍历标记(含优化)」
【解题报告】《LeetCode零基础指南》(第九讲) 二级指针(2)
【解题报告】《LeetCode零基础指南》(第九讲) 二级指针(2)
|
C语言 UED 索引
【解题报告】《LeetCode零基础指南》(第九讲) 二级指针(1)
【解题报告】《LeetCode零基础指南》(第九讲) 二级指针(1)
【解题报告】《LeetCode零基础指南》(第九讲) 二级指针(1)
【解题报告】《LeetCode零基础指南》(第八讲) 二维数组(2)
【解题报告】《LeetCode零基础指南》(第八讲) 二维数组(2)
【解题报告】《LeetCode零基础指南》(第八讲) 二维数组(2)