202. 快乐数 冷不防 2024-03-17 21:18 32阅读 0赞 #### 202. 快乐数 #### * 题干背景 * 重要思路 * 具体代码 ## 题干背景 ## [力扣入口-202.快乐数][-202.] 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。 如果 n 是快乐数就返回 True ;不是,则返回 False 。 示例: 输入:19 输出:true 解释: 1^2 + 9^2 = 82 8^2 + 2^2 = 68 6^2 + 8^2 = 100 1^2 + 0^2 + 0^2 = 1 ## 重要思路 ## 1. 如果不能最终变为1,那么在变化过程中一定会出现变化成重复的一个数。 2. 时间复杂度和空间复杂度均为O(logn)。 ## 具体代码 ## // 202. 快乐数 public boolean isHappy(int n) { Set<Integer> set = new HashSet<>(); while(n != 1 && !set.contains(n)){ set.add(n); n = changeN(n); } return n==1; } public int changeN(int n){ int res = 0; while(n != 0){ res += (n%10) * (n%10); n /= 10; } return res; } **参考资料**:[第202题. 快乐数][202_.] [-202.]: https://leetcode.cn/problems/happy-number/description/ [202_.]: https://programmercarl.com/0202.%E5%BF%AB%E4%B9%90%E6%95%B0.html#google_vignette
还没有评论,来说两句吧...