码迷,mamicode.com
首页 > 移动开发 > 详细

Leetcode Happy Number 弗洛伊德判环解循环

时间:2016-01-12 16:57:20      阅读:219      评论:0      收藏:0      [点我收藏+]

标签:

今天先谈下弗洛伊德判环,弗洛伊德判环原来是在一个圈内有两人跑步,同时起跑,一人的速度是另一人的两倍,则那个人能在下一圈追上另一个人,弗洛伊德判环能解数字会循环出现的题,比如说判断一个链表是不是循环链表。

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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!