标签:
今天先谈下弗洛伊德判环,弗洛伊德判环原来是在一个圈内有两人跑步,同时起跑,一人的速度是另一人的两倍,则那个人能在下一圈追上另一个人,弗洛伊德判环能解数字会循环出现的题,比如说判断一个链表是不是循环链表。
Leetcode Happy Number 就是这样一道简单的题,实现方法有很多,但是弗洛伊德判环是比较简单,同时效率也是较高的那种。
class Solution { public: int change(int n){ int ans = 0; for ( ; n!=0 ; ans+= (n%10)*(n%10),n/=10); return ans; } bool isHappy(int n) { int one = n; int two = n; while(1){ one = change(one); //一倍速度 two = change(change(two));//两倍速度 if(one == 1 || two == 1) return true; if(one == two) return false; } } };
Leetcode Happy Number 弗洛伊德判环解循环
标签:
原文地址:http://www.cnblogs.com/onlyac/p/5124856.html