[关闭]
@chawuciren 2018-10-14T05:31:30.000000Z 字数 872 阅读 647

Happy Number

leetcode


  1. 最终结果,借鉴了计算每一位的平方的过程http://www.cnblogs.com/grandyang/p/4447233.html
  1. bool isHappy(int n){
  2. int result=0;
  3. do{
  4. result+=(n%10)*(n%10);
  5. n/=10;
  6. }while(n!=0);
  7. if(result==1)
  8. return true;
  9. if(result==4)
  10. return false;
  11. result=isHappy(result);
  12. }
  1. 在vim上可以但是leetcode报错
  1. int happy(int n)
  2. {
  3. int i=0;
  4. int a=1;
  5. int b=0;
  6. int x=1;
  7. int y=0;
  8. int z=0;
  9. for(i=0;i<=20;i++)
  10. {
  11. if(n/a==0)
  12. break;
  13. else
  14. {
  15. b+=1;
  16. a=a*10;
  17. }
  18. }
  19. for(b=b-1;b>=0;b--)
  20. {
  21. x=1;
  22. if(b==0)
  23. {
  24. x=1;
  25. }
  26. else
  27. {
  28. for(i=0;i<b;i++)
  29. x=x*10;
  30. }
  31. y=n/x;
  32. z+=y*y;
  33. n=n%x;
  34. }
  35. return z;
  36. }
  37. int isHappy(int n)
  38. {
  39. int x=0;
  40. for(;;)
  41. {
  42. n=happy(n);
  43. if(n!=1)
  44. {
  45. x+=1;
  46. if(x>=100)
  47. return false;
  48. }
  49. if(n==1)
  50. return true;
  51. }
  1. 另一个不通过版本卡在1414781544
  1. bool isHappy(int n)
  2. {
  3. int a=1;
  4. int b=0;
  5. int x=1;
  6. int y=0;
  7. int result=0;
  8. for(int i=0;i<=20;i++)
  9. {
  10. if(n/a==0)
  11. break;
  12. else
  13. {
  14. b+=1;
  15. a=a*10;
  16. }
  17. }
  18. for(b=b-1;b>=0;b--)
  19. {
  20. x=1;
  21. if(b==0)
  22. x=1;
  23. else
  24. {
  25. for(int i=0;i<b;i++)
  26. x=x*10;
  27. }
  28. y=n/x;
  29. result+=y*y;
  30. n=n%x;
  31. }
  32. if(result==1)
  33. return true;
  34. if(result==4)
  35. return false;
  36. result = isHappy(result);
  37. return;
  38. }

在此输入正文

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注