目录
1. 解题报告
Q1: 剑指 Offer 64. 求1+2+…+n
int sumNums(int n){
/*使用for循环,类和*/
int i =1;
int sum = 0;/*所存*/
for(i=1;i<=n;++i)
{
sum = sum + i;
}
return sum;
}
Q2: 231. 2 的幂
bool isPowerOfTwo(int n)
{
if(n == 0)
{
return false;
}
else if( n == 1)/*分类讨论,当n等于1*/
{
return true;
}
else
{
int i = 0;
long long k = 1;/*长整型8字节*/
for(i = 1;i<32;++i)
{
k = k*2;
if( n == k )
{
return true;
}
else if ( n < k)
{
return false;
}
}
}
return false;/*默认值,这里不能漏*/
}
Q3: 326. 3 的幂
bool isPowerOfThree(int n){
unsigned k = 1;
int i;
if(n<=0)
{
return false;
}
if(n == 1)
{
return true;
}
for(i = 1; i<20 ;++i) /*i<20即可*/
{
k *= 3;
if( n == k)
{
return true;
}
else if( n < k)
{
return false;
}
}
return false;/*不可缺少*/
}
Q4: 342. 4的幂
bool isPowerOfFour(int n){
unsigned k = 1;
int i;
if(n<=0)
{
return false;
}
if(n == 1)
{
return true;
}
for(i = 1; i<=15 ;++i) /*i<=15,才能通过*/
{
k *= 4;
if( n == k)
{
return true;
}
else if( n < k)
{
return false;
}
}
return false;/*不可缺少*/
}
Q5: 1492. n 的第 k 个因子
int kthFactor(int n, int k){
int cnt=0;
int i;
for(i=1;i<=n;++i)
{
if( n % i == 0)
{
cnt++;/*可以写成++cnt*/
}
/*该if语句也可写入第一个if语句中,
因为cnt只有在进入第一个语句后才会改变,
若不进第一个if,则也不会进入第二个if语句*/
if(cnt == k)
{
return i;
}
}
return -1;
}
Q6: 367. 有效的完全平方数
/*method_1:使用枚举,for循环驱动,if语句判断*/
bool isPerfectSquare(int num){
unsigned int i ; /*四字节32位,正整数要加unsigned*/
for(i=1;i<pow(2,16);++i)
{
if( num == i*i)
{
return true;
}
/*该if语句减少不必要的工作量*/
if( i*i > num)
{
return false;
}
}
return false;
}
2. 学习笔记
小结:
1)for循环的()内初始化,条件,执行表达式分别是为了,初始化循环,控制循环,驱动循环;
2)unsigned int 有4字节32位。
3) 函数有返回类型时,需要有默认return语句。