赞
踩
//求和,因为需要多次使用求和,直接封装成一个函数 int bitSum(int n) { int sum = 0; while(n) { int tmp = n % 10; sum += tmp * tmp; n /= 10; } return sum; } bool isHappy(int n) { //快慢双指针 //1.定义slow,fast int slow = n; int fast = bitSum(n);//需要先进行一次求和 //2.找到交点 //3.判断是否相等 while(slow != fast) { slow = bitSum(slow);//对原来基础上的数进行新的求和 fast = bitSum(bitSum(fast));//需要多走一步,嵌套求和 } return slow == 1; }
class Solution { public int bitSum(int n) { int sum = 0; while(n != 0) { int tmp = n % 10; sum += tmp * tmp; n /= 10; } return sum; } public boolean isHappy(int n) { int fast = bitSum(n); int slow = n; while(fast != slow) { fast = bitSum(bitSum(fast)); slow = bitSum(slow); } return slow == 1; } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。