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

鹿衔草aru 2022-03-29 17:10:14

一、总结

今天的比昨天的要顺利一点,昨天的位运算是真的没见识过。第二天了坚持住,加油!!!!

二、战绩

 

三、解题报告

第一题:剑指 Offer 64. 求1+2+…+n

方法一:

class Solution {
    public int sumNums(int n) {
        int count =1;
        int sum = 0;
        while(n > 0){
            sum += count;
            count++;
            n--; 
        }
        return sum;
    }
}

思路:逃课

方法二:

class Solution {
    public int sumNums(int n) {
        boolean flag = n > 0 && (n += sumNums(n - 1)) > 0;
        return n;
    }
}

思路:

循环代替递归,逻辑语句代替判断语句。

第二题: 231. 2 的幂

class Solution {
    public boolean isPowerOfTwo(int n) {
        while(n > 1){
              if(n % 2 != 0){
                return false;  
              }
              n = n / 2;
          }
          return n==1;
    }
}

思路:一直除二如果最后为1则符合,其中奇数肯定不可能,可排除。 

第三题:326.3 :3的幂

class Solution {
    public boolean isPowerOfThree(int n) {
        while(n > 1){
            if(n % 3 != 0){
                return false;
            }
            n = n / 3;
        }
        return n==1;
    }
}

思路:与第二题一样,但是n肯定能被3整除。 

第四题:342. 4的幂

 

class Solution {
    public boolean isPowerOfFour(int n) {
        while(n > 1){
            if(n % 4 != 0){
                return false;
            }
            n = n / 4;
        }
        return n==1;
    }
}

思路:与前三个思路一样。

第五题:1492. n 的第 k 个因子

class Solution {
    public int kthFactor(int n, int k) {
        int count = 0;
        for (int i = 1; i <= n ; i++){
            if (n % i == 0){
                count++;
                if (count == k){
                    return i;
                }
            }
        }
        return -1;
    }

}

思路,定义一个计数器,每找到一个就加一,当和k相同时返回就可以。

第六题:367. 有效的完全平方数 

方法一:

class Solution {
    public boolean isPerfectSquare(int num) {
        int x = (int)Math.sqrt(num);
        return x * x == num;
    }
}

思路:使用sqrt来对num进行开方,但是由于强转可能会造成精度缺失,所以需要在来判断一次。 

方法二:

class Solution {
    public boolean isPerfectSquare(int num) {
        if (num == 1){
            return true;
        }
        for(int i = 1; i < num; i++){
            if (i * i == num){
                return true;
            }
        }
        return false;
    }
}

思路:一个一个枚举得到。

...全文
57 回复 打赏 收藏 转发到动态 举报
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

64,199

社区成员

发帖
与我相关
我的任务
社区描述
学习「 算法 」的捷径就是 「 题海战略 」,社区由「 夜深人静写算法 」作者创建,三年ACM经验,校集训队队长,亚洲区域赛金牌,世界总决赛选手。社区提供系统的训练,答疑解惑,面试经验,大厂内推等机会
社区管理员
  • 英雄哪里出来
  • 芝麻粒儿
  • Amy卜bo皮
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

QQ群:480072171

英雄算法交流 8 群

 

试试用AI创作助手写篇文章吧