zoukankan      html  css  js  c++  java
  • Leetcode 202 Happy Number 弗洛伊德判环解循环

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

    one = change(one); //一倍速度
    two = change(change(two));//两倍速度

    即一倍速度的人调用生成函数change一次,两倍速度的人调用生成函数change两次。

    Leetcode 202 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;
    		}
    		
    	}
    };
    
  • 相关阅读:
    面试题_day0212
    面试题_day0211
    猫眼的数字解密
    缺口验证码
    mysql替换字段里面的内容
    mysql重复id删除
    追踪你的女朋友。
    淘宝登录验证
    jadx-gui-1.0.0.jar怎么运行?
    Python实现一个进度条
  • 原文地址:https://www.cnblogs.com/onlyac/p/5124856.html
Copyright © 2011-2022 走看看