202.Happy Number

题意

求一个数是不是happy number,定义在官网题目下很清楚,这里就不赘述


我的算法

首先要考虑如果不出现1会怎么样,我猜测是会出现循环的,不然这题无解

题外:总是忘记了求平方要用 power(x,y)而不是 x^2, 导致错误

// c++
class Solution {
public:
    bool isHappy(int n) {
        set<int> s;
        pair<set<int>::iterator,bool> ret;
        while(n != 1){
            int count(0);
            //拆解并计算sum
            while (n > 0){
                count += (n%10)*(n%10);
                n /= 10;
            }
            // 给 n 赋值
            n = count;
            ret = s.insert(n);
            if(ret.second == false) return false; //如果在其中查询到了n说明开始循环出现了,则一定不会出现1的,所以失败
        }
        return true;
    }
};
//java
public class Solution {
    public boolean isHappy(int n) {
        HashSet<Integer> s = new HashSet<Integer>(); // hashset里面只能是具体的类型,而不能是primate类型,也就是基本的数据类型,所以不能用int
        while(n != 1){
            int count = 0;
            while(n>0) {
                count += Math.pow(n%10,2);
                n /= 10;
            }
            n = count;
            if (!s.add(n)) return false;
        }
        return true;
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值