leetcode 202. Happy Number


  1. Happy Number:题目链接

方法1:利用HashSet

基本思路:首先这个题目是要将数字的每一位分离出来,用sum记录此次该数每个数字的平方和是多少,如果该数重复出现及sum重复,说明肯定不是happy number,用HashSet来记录sum

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
import java.util.HashSet;
import java.util.Set;

public class Solution1 {
// 时间复杂度 O(N^2) 空间复杂度(m) m:set的大小
public boolean isHappy(int n) {
Set<Integer> set = new HashSet<>(); // 记录sum
while (true) {
int sum = 0;
// 分离数位
while (n > 0) {
int k = n % 10;
sum += Math.pow(k, 2);
n /= 10;
}
n = sum;
// 如果sum == 1 说明是happy number
if (sum == 1){
break;
}
// 如果set包含sum 说明不是
if (set.contains(sum)){
return false;
}else{ // set不含sum 添加进set 继续
set.add(sum);
}
}
return true;
}

public static void main(String[] args) {
int n = 19;
System.out.println(new Solution1().isHappy(n));
}
}

pS: 源代码链接

文章目录
  1. 1. 方法1:利用HashSet
|