202、快乐数
一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。
解法一:思路,用set记录每次对一个数进行平方操作后的数,记录一次判断一次这个数是否出现过,或者是否为1,如果出现过说明不是快乐数,如果为1则说明是快乐数。#重点是,不是快乐数会一直循环,这是用set判断之前出现过可以跳出循环。
class Solution { public boolean isHappy(int n) { //定义一个set存放中间出现的数 HashSet<Integer> hashSet = new HashSet<Integer>(); //在set中不存在n,且n不是1的时候循环,因为是1的话说明快乐数,如果非非快乐数会一直循环, // 用set存放就是为了找到之前出现过的数,说明不是快乐数 while(n != 1 && !hashSet.contains(n)){ hashSet.add(n); int sum = 0; //将一个数如23 编程 => 2*2 + 3*3 在返回给n看是否为1或者是否在set中 while (n != 0){ sum += Math.pow(n%10,2.0); n /= 10; } n = sum; } return n == 1; } }
LeetCode刷题笔记(Java版)----202、快乐数
最新推荐文章于 2024-07-20 11:15:04 发布