【个人笔记】英雄哥-leetcode零基础指南-第三讲-循环(python)

【个人笔记】英雄哥-leetcode零基础指南-第三讲-循环(python),第1张

【个人笔记】英雄哥-leetcode零基础指南-第三讲-循环(python)

本人之前主要用到的都是python,但是由于懒得要死lc一道题都没做过导致笔试被乱杀,所以过来强制让自己学点东西,如有任何问题请指出,不吝赐教!

Day 2 第三讲 循环

了解循环 语法规则

for 语句的一般形式为:

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

运行过成为

  1. 执行 循环初始化表达式
  2. 执行循环条件表达式,若为真,则执行循环体,否则结束循环
  3. 执行完循环体后再执行循环执行表达式
  4. 重复2,3,直到循环条件表达式的值为假

简单应用

使用c++实现一个简单的1+2+3+…+n的循环

int sumNums(int n){           // 1
	int i;                    // 2
	int sum = 0;              // 3 
	for(i = 1; i <= n; ++i){  // 4
		sum += i;             // 5
	}                 
	return sum;               // 6
}
  1. 输入函数,输入值为n,函数名称为sumNums
  2. i作为循环变量
  3. 初始化求和值为0,sum = 0
  4. for 循环(循环初始表达式: i = 1
    循环条件表达式: i <= n
    循环执行表达式:++i )
  5. 循环体: sum += i,代表每次累加第i次的值到sum中
  6. 返回求和sum的值
初始化表达式

以下基于之前的等差数列求和代码进行改动

初始化表达式外置

将初始化表达式提到for循环外面

int i = 1;                // 在这一步直接将i初始化为1
int sum = 0;
for ( ; i <= n ; ++i) {
	  sum += i;
}
初始化表达式内置

在初始化表达式内 进行 初始化赋值,通过逗号分割

int i, sum;
for (i = 1, sum = 0; i <= n; ++i){
	sum += i;
}
条件表达式

若不告诉代码判断语句当 i <= n 的时候进行循环,则会无限的累加下去

int i = 1, sum = 0;
for (i = 1;      ; ++i){          // 这里缺失了判断语句,所以会无限循环
	sum += 1;
}
执行表达式

执行表达式 作用是让循环条件逐渐不成立,从而达到跳出循环的目的。
例如在上述代码中,我们的目标是等差数列的和,当累加到n的时候,这个总值已经是我们需要的值了,所以不需要再往下加。
但是执行表达式可以被省略,进行外置,因为本身for循环就是个循环体,在条件中循环也是循环,在外面循环也是循环(但是这两种循环方式可能会让i值不同,但是判断语句i<=n不会出错),如下所示

int i, sum = 0;
for (i = 1; i <= n;     ){       // 将执行表达式外置
	sum += i;
	++i;                         // 放在这里照样进行循环
}
题目分析 2的幂

实现一个函数,判断一个32位整形n是否为2的幂
幂:几的几次方,能被整除

bool isPowerTwo(int n){
	int i;
	unsigned int k = 1;             // 1
	if ( n < = 0 ) {
		return false;               // 2
	}
	if ( n == 1 ) {
	return true;					// 3
	}
	for ( i = 1, i < = 31; ++i ) {
		 k *= 2;					// 4
		 if ( k == n ) {
		 	 return true;			// 5
		 }
	}
	return false
}	 
  1. 定义一个无符号整型 k
  2. 如果 n <= 0, 则必然不是2的幂
  3. 必然是 2的0次幂
  4. 枚举所有的可能,直至31(2^1 ,22,…231)
  5. 如果找到了与n相同的值,返回true
  6. 否则返回false
n的第k个因子

给定两个正整数n,k
如果正整数i满足 n % i == 0,则称i是整数k的因子
考虑整数n所有因子,升序排列,并返回第k个因子
如果n的因子数量少于k,返回-1

int Factor(int n, int k){
	int i = 1
	int count = 0;             // 1
	for(; i <= n; ++i){        // 2
		if (n % i == 0) {      // 3
			++ count;
			if (count == k){
				return i;      // 4
			} 
		}
	}
	return -1;                 // 5
}
  1. 定义count计数器并初始化为0
  2. 枚举所有[1,n]范围内所有数字为因子数
  3. 一旦满足 n % i == 0, 则计数器+1
  4. 当计数器等于k时代表找到了第k个因子,直接返回
  5. 如果没找到第k个因子,代表因子数量不够,所以返回-1
有效的完全平方数

给定正整数x,如果x是完全平方数,返回true,否则false

int isSquare( int x ){
	int i;
	long long p;
	for( i = 1;     ;++i ){   // 1
		p = (long long)i * i; // 2
		if ( p == x ) {
			return true;      // 3 
		}
		if ( p > x ) {		 
			return false;	  // 4
		}
	}
	return false;             // 5
}
  1. 定义无限循环(没有循环条件表达式)
  2. 枚举所有数平方,通过 long long 避免32整型溢出
  3. 如果发现某个数的平方等于x,返回true
  4. 如果发现p值大于x,无需继续,返回false
  5. 保护该代码能够跳出
今日习题 LC 剑指offer 64

LC 231 2的幂

本次课程中第一个正攻解决的题目。相较于之前的示例代码,尝试了将初始化提出for循环,在最开始的时候进行初始化,个人观感程度获得了一定提升。

LC 325 3的幂添加链接描述

2 3 4 的幂需要注意的只是会不会溢出。本题拿python写了。
非常建议完全平方数和n的k个factor作为必做题而不是重复234幂啊。。

LC 342 4的幂

LC 1492 n的第k个因子

前面两次解答错误都是括号没有括起来。。麻了

LC 367 有效的完全平方数

今日份总结
  1. <= 要连这写,不能有空格
  2. {}要把一整段代码框起来
  3. 我怎么这么菜.jpg
  4. 计时 1.5h (大概)

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5658351.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-16
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存