完美数 | LeetCode刷题笔记

255 阅读2分钟

这是我参与8月更文挑战的第23天,活动详情查看:8月更文挑战


相关文章

LeetCode刷题汇总:LeetCode刷题

一、题目描述


完美数

对于一个 正整数,如果它和除了它自身以外的所有 正因子 之和相等,我们称它为 「完美数」。

给定一个 整数 n, 如果是完美数,返回 true,否则返回 false

从简单题目开始刷,锻炼自己的思维能力,为面试准备~

二、思路分析


  • 看看题目的示例,我们来理一理这个思路~

  • 示例 1:

    输入:28
    输出:True
    解释:28 = 1 + 2 + 4 + 7 + 14
    1, 2, 4, 7, 和 14 是 28 的所有正因子。输入: [1,2,3,1]
    输出: true
    
  • 示例2:

    输入:num = 6
    输出:true
    
  • 示例3:

    输入:num = 496
    输出:true
    
  • 示例4:

    输入:num = 8128
    输出:true
    
  • 示例5:

    输入:num = 2
    输出:false
    
  • 这题目可以累加的思维来做。

  • 首先判断该数值是否为1。为1直接返回false。

  • 再找出所有的因数累加。

  • 最后判断是否相等。

  • 如果相等的话返回true,反之返回false。

三、AC 代码


  • 累加破解法:

    class Solution {
        public boolean checkPerfectNumber(int num) {
            if(num == 1) {
                return false;
            }
            int res = 1;
            for(int i = 2;i <= num / 2;i++){
                if(num % i == 0){
                    res += i;
                }
            }
            if(res == num){
                return true;
            } 
            return false;
        }
    }
    
    • image-20210823100724480.png
    • 这种解法还是很nice的呀!

四、总结

  • 解题思路千千万,不管是本办法还好,还是奇思妙想的解法,能解决就是好办法!白猫黑猫能抓老鼠的猫就是好猫!
  • 这里列几个LeetCode的其他大神的解法作为参考!
  • 点击跳转:官方解法
  • 点击跳转:双指针解法

**路漫漫其修远兮,吾必将上下求索~ **如果你认为i博主写的不错!写作不易,请点赞、关注、评论给博主一个鼓励吧~hahah