Leetcode---快乐数--技巧

快乐数

题目链接:快乐数

思路:

这道题乍一看不知道怎么解,了解什么是快乐数后非常简单
突破点就两个:1.如何拆解任意长度的整数 2.如何判断非快乐数已经进入循环状态
第一个直接循环拆就行了,第二个在百度了快乐数后了解,所有非快乐数最终都会进入4 → 16 → 37 → 58 → 89 → 145 → 42 → 20 → 4 的循环中。
代码:

	public static boolean isHappy(int n) {
        List<Integer> list = new ArrayList<Integer>();
        while(n!=4) {
        	while(n!=0) {
        		list.add(n%10);
        		n/=10;
        	}
        	int temp = 0;
        	for(int i:list) {
        		temp+=i*i;
        	}
        	if(temp==1) {
        		return true;
        	}else {
        		list.clear();
        		n = temp;
        	}
        }
		return false;
    }

你可能感兴趣的:(算法,Leetcode,快乐数,算法)