- Write an algorithm to determine if a number is "happy".
A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the number equals 1 (where it will stay), or it loops endlessly in a cycle which does not include 1. Those numbers for which this process ends in 1 are happy numbers.
Example: 19 is a happy number
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1
一开始的想法就是直接按定义来:
最后发现运行时间够长,Time Limit Exceededint getsum(int x){ int sum=0; while(x){ sum+=(x%10)*(x%10); x=x/10;} return sum; } bool isHappy(int n) { if(n<=0)return false; bool f=1; long k=getsum(n); while(k!=1){ f=0; k=getsum(k);} if(f==0)return true; else return false; }
- 最终查阅有关快来数定义,发现当在迭代循环判断是否为1的过程中时,若进入了这种无限循环,最终都会出现4,故一旦遇见4即可知道进入了无限循环,判断是非快乐数字,减少了时间复杂度:
int getsum(int x){ int sum=0; while(x){ sum+=(x%10)*(x%10); x=x/10;} return sum; } bool isHappy(int n) { if(n<=0)return false; while(n!=1){ n=getsum(n); if(n==4)return false;} return true; }
Leetcode 快乐数Happy Number
最新推荐文章于 2024-07-13 08:41:21 发布