LeetCode题解——Happy Number
2015-10-22 19:37
330 查看
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.参考判断链表是否是一个循环链表的方法:fast和slow指针; 2.利用hashset,保存计算过程,若出现重复的数,则不是happy number。
方法一:4ms
方法2:4ms
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.参考判断链表是否是一个循环链表的方法:fast和slow指针; 2.利用hashset,保存计算过程,若出现重复的数,则不是happy number。
方法一:4ms
class Solution { public: int digitSquareSum(int n) { int sum = 0, tmp; while (n) { tmp = n % 10; sum += tmp * tmp; n /= 10; } return sum; } bool isHappy(int n) { int slow, fast; slow = fast = n; do { slow = digitSquareSum(slow); fast = digitSquareSum(fast); fast = digitSquareSum(fast); } while(slow != fast); if (slow == 1) return 1; else return 0; } };
方法2:4ms
class Solution { public: bool isHappy(int n) { set<int> looktable; while(looktable.find(n)==looktable.end()){ looktable.insert(n); n = digitSquareSum(n); if(n==1) return true; } return false; } int digitSquareSum(int n){ int sum =0 ; while(n){ sum+=pow((n%10),2); n=n/10; } return sum; } };
相关文章推荐
- iOS开发拓展篇—音效的播放
- 关于Android Studio导入.9图片报错问题
- spring mvc配置ObjectMapper忽略无法识别的字段,以及一些博客推荐
- android路上的点点滴滴
- iOS开发拓展篇—静态库
- AndroidL的checkPermission方法详解
- android拍照后图片路径的获取(解决不同手机存在拍照后旋转的问题)
- cocos2d-x-3.6 Window没有debug.log文件?
- Android关于String数据的startsWith()和endsWith()函数操作
- Android 操作系统的内存回收机制
- Android CollapsingToolbarLayout:将ActionBar载入Toolbar(2)
- iOS上传错误 ERROR ITMS-90049
- Android 关于@NonNull
- iOS - 闪关灯
- Android逆向之旅---SO(ELF)文件格式详解
- Android 颜色透明度计算
- Android的handler详解
- ANDROID仿淘宝商品浏览滑(拖)动查看详情界面
- Device Compatibility
- IOS 内存管理