【LeetCode T202.Happy Number/寻找快乐数】归志宁无五亩园,读书本意在元元。这篇文章主要讲述LeetCode T202.Happy Number/寻找快乐数相关的知识,希望能为你提供帮助。
文章图片
对题目进行分析可以知道对一个数字进行isHappy判断其可能有两种情况,一个使收敛到1另一个是在一组数中陷入循环。因此我们就通过快慢指针,让慢指针一次移动一位,快指针一次移动两位,若是环形结构则两者必然在某一时刻会相遇,若收敛,快指针一定先一步收敛到1,至于发散的可能性,受制于进制和位数,在试过几个大数后就可以知道这不可能发散,只存在上面的两种可能。
看了下官方的题解,官方给了三种思路,一种是利用HashSet存储出现过的元素,来判断环形结构;另一种就是上述的快慢指针;第三种就是数学技巧,需要找规律来进行求解。
我的题解代码如下,leetcode上运行时间0ms,内存占用5.2MB
int getNext(int n){ int sum=0; while(n> 0){ int tmp=n%10; sum+=tmp*tmp; n/=10; } return sum; }bool isHappy(int n){ int slowptr,fastptr; slowptr=n; fastptr=getNext(n); while(fastptr!=1 & & fastptr!=slowptr){ slowptr=getNext(slowptr); fastptr=getNext(getNext(fastptr)); } return fastptr==1; }
推荐阅读
- 初探RT1061 flash remapping功能的使用
- 18P 滑稽脸动态gif表情包大全_微信
- 川普与希拉里美国大选唱情歌表情包分享_微信
- 川普与希拉里表情包对决大全_微信
- 川普带字搞笑表情包大全_微信
- qq厘米秀京东扭蛋机怎样玩?
- 新浪微博金v认证怎样获得?_新浪微博
- 微信公众平台怎样添加视频链接_微信
- QQ我的厘米秀之旅怎样看?