住房和城乡建设部网站首页,潍坊 专业网站建设,智慧团建如何转团关系,直播视频软件哪个好摘要#xff1a; Leetcode的AC指南 —— 哈希表#xff1a;202. 快乐数。题目介绍#xff1a;编写一个算法来判断一个数 n 是不是快乐数。 文章目录 一、题目二、解析1、哈希表 一、题目 题目介绍#xff1a;编写一个算法来判断一个数 n 是不是快乐数。
「快乐数」 定义为… 摘要 Leetcode的AC指南 —— 哈希表202. 快乐数。题目介绍编写一个算法来判断一个数 n 是不是快乐数。 文章目录 一、题目二、解析1、哈希表 一、题目 题目介绍编写一个算法来判断一个数 n 是不是快乐数。
「快乐数」 定义为
对于一个正整数每一次将该数替换为它每个位置上的数字的平方和。然后重复这个过程直到这个数变为 1也可能是 无限循环 但始终变不到 1。如果这个过程 结果为 1那么这个数就是快乐数。如果 n 是 快乐数 就返回 true 不是则返回 false 。
力扣题目链接
示例 1:
输入n 19
输出true
解释
12 92 82
82 22 68
62 82 100
12 02 02 1示例 2:
输入n 2
输出false提示 1 n 2e31 - 1 二、解析 1、哈希表
public static boolean isHappy (int n) {int num 0;SetInteger SUM new HashSet();while (n ! 1) {int sum 0;// 每个位置上的数字的平方和while (n ! 0) {num n % 10;sum num * num;n (int) (n / 10);}// 将平方和在没在哈希表中不在加入哈希表。if (SUM.contains(sum)) {return false;} else {SUM.add(sum);n sum;}}return true;}时间复杂度: O(logn)空间复杂度: O(logn)代码优化
class Solution {public boolean isHappy(int n) {SetInteger record new HashSet();while (n ! 1 !record.contains(n)) {record.add(n);n getNextNumber(n);}return n 1;}private int getNextNumber(int n) {int res 0;while (n 0) {int temp n % 10;res temp * temp;n n / 10;}return res;}
}