前言
简单的for语句
一、知识点
1、基本语法
for(循环初始化表达式; 循环条件表达式; 循环执行表达式){
循环体
}
2、注意
long long 避免32整形溢出
二、题目
1、剑指 Offer 64. 求1+2+…+n
1.1 分析
用 for循环简单语法运用
简单一行过
1.2代码
朴素法
class Solution {
public:
int sumNums(int n) {
int sum = 0;
for(int i = 1 ; i <= n ; i++)
{
sum += i;
}
return sum;
}
};
天秀法
class Solution {
public:
int sumNums(int n) {
return sizeof(bool[n][n + 1]) >>1;//计算所占空间,n*(n -1)/2
}
};
2、231. 2 的幂
2.1题目分析
注意考虑特殊情况
2.2代码
class Solution {
public:
bool isPowerOfTwo(int n){
int i;
unsigned int k = 1;
if(n <= 0) {
return false;
}
if(n == 1) {
return true;
}
for(i = 1; i <= 31; ++i) {
k *= 2;
if(k == n) {
return true;
}
}
return false;
}
};
3、326. 3 的幂
3.1题目分析
和上题一样
3.2代码
class Solution {
public:
bool isPowerOfThree(int n) {
int i;
unsigned int k = 1;
if(n <= 0) {
return false;
}
if(n == 1) {
return true;
}
for(i = 1; i <=30 ; ++i) {
k *= 3;
if(k == n) {
return true;
}
}
return false;
}
};
4、342. 4的幂
4.1题目分析
一样套路,稍微改下范围,微调
4.2代码
class Solution {
public:
bool isPowerOfFour(int n) {
int i;
unsigned int k = 1;
if(n <= 0) {
return false;
}
if(n == 1) {
return true;
}
for(i = 1; i <=18 ; ++i) {
k *= 4;
if(k == n) {
return true;
}
}
return false;
}
};
5、1492. n 的第 k 个因子
5.1题目分析
求因子,利用取余操作
5.2代码
class Solution {
public:
int kthFactor(int n, int k) {
int cnt = 0;
for(int i = 1 ; i <= n ; i ++)
{
if(n % i ==0)
{ cnt ++;
if(cnt == k) return i;
}
}
return -1;
}
};