202.Happy Number

来源:互联网 发布:linux telnet命令端口 编辑:程序博客网 时间:2024/05/18 03:24

题意

求一个数是不是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;    }};
//javapublic 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
原创粉丝点击