Leetcode 快乐数Happy Number
2015-08-02 15:13
369 查看
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
一开始的想法就是直接按定义来:
最终查阅有关快来数定义,发现当在迭代循环判断是否为1的过程中时,若进入了这种无限循环,最终都会出现4,故一旦遇见4即可知道进入了无限循环,判断是非快乐数字,减少了时间复杂度:
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
一开始的想法就是直接按定义来:
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; bool f=1; long k=getsum(n); while(k!=1){ f=0; k=getsum(k);} if(f==0)return true; else return false; }最后发现运行时间够长,Time Limit Exceeded
最终查阅有关快来数定义,发现当在迭代循环判断是否为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; }
相关文章推荐
- Android之——Service总结
- 关于开发Android应用时写从图库选择头像功能时遇到的一些问题。
- android webview使用小结
- 【Android多媒体】Android5.0 NuPlayer多媒体框架【1】
- iOS 多线程技术1
- Objective-C学习笔记_实例变量可⻅度及方法
- JXPath(1.3) - Object Graph Traversal
- Objective-C学习笔记_类和对象
- iOS 将一个View显示覆盖到NavigationBar上面
- Android Activity的探讨——入门
- Android Studio 设置项目Module编码,解决Android Studio项目运行时乱码问题
- Android-selector背景选择器
- objective-c中字符串长度计算
- objective-c中字符串长度计算
- android 键值(input)
- android studio使用百度SDK开发百度地图应用中遇到的问题汇总
- android 显示和分辨率区别
- Android学习笔记之AIDL
- Android 源码编译出错汇总
- android开发之Toast的多种应用