`
Vitas_Wang
  • 浏览: 9102 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

find the happy number

阅读更多
this question is come from leetcode:

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

1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1

the value of this question: how to define it will loops endlessly? 100, 1000, 10000 or more times without end in 1? maybe all of them not right.
unless we find that there have a cycle, we make sure that there have a endless loop.
So we need to use two point, if the fast point = the slow point, then it approved that there have a cycle. this is a endless loop.

java solution as below:
 public boolean isHappy(int n) {
        if(n <= 0) return false;
        int times = 100;
        int slow = n;
        int fast = n;
        do{
            slow = nextNumber(slow);
            fast = nextNumber(fast);
            fast = nextNumber(fast);
            if(fast == 1) return true;
        }while(slow != fast);
        
        return false;
    }
    
    private int nextNumber(int n){
        int result = 0;
        while(n > 0){
            result += Math.pow(n%10, 2);
            n = n/10;
        }
        return result;
    }
分享到:
评论

相关推荐

    hw1.rar_Happy!

    Homework 1. Helps to find happy number and consecutive numbers

    计算机网络第六版答案

    27. Creation of a botnet requires an attacker to find vulnerability in some application or system (e.g. exploiting the buffer overflow vulnerability that might exist in an application). After finding ...

    rubyinstaller-devkit-2.5.3-1-x64.exe

    It provides the biggest number of compatible gems and installs MSYS2-Devkit alongside Ruby, so that gems with C-extensions can be compiled immediately. The 32 bit (x86) version is recommended only if...

    BobBuilder_app

    So a look-up for a key just compares the first keys in the page list to find the page required and gets the key from the page's dictionary. MGIndex is O(log M)+O(1), M being N / PageItemCount ...

    vim插件打包

    " 'g' global: find global definition(s) of the token under cursor " 'c' calls: find all calls to the function name under cursor " 't' text: find all instances of the text under cursor " 'e' egrep:...

    mkvtoolnix_2.7.0

    include the proper version number in the cd commands. 5) Download and install wxWindows (http://www.wxwindows.org/) if you want a GUI for mkvinfo. Make sure that mkvtoolnix' configure can find the...

    Google C++ Style Guide(Google C++编程规范)高清PDF

    You can significantly minimize the number of header files you need to include in your own header files by using forward declarations. For example, if your header file uses the File class in ways that ...

    cpp-算法精粹

    Happy Number Ugly Number Ugly Number II Super Ugly Number Fraction to Recurring Decimal Factorial Trailing Zeroes Nim Game 模拟 Reverse Integer Palindrome Number Insert Interval Merge Intervals ...

    IEradicator2001

    IEradicator was made to remove (it cleans IE3 upwards to the version number) - Self Extracting CAB installer with inbuilt license confirmation - Altered reboot timing to force reboot at the start to...

    ramin 2.2 for xp

    '1' (number one) key repeatedly during booting and the Radmin driver will not load. ---------------------------------------------------------------------- Limitations ------------------------------...

    LeetCode最全代码

    389 | [Find the Difference](https://leetcode.com/problems/find-the-difference/) | [C++](./C++/find-the-difference.cpp) [Python](./Python/find-the-difference.py) | _O(n)_ | _O(1)_ | Easy | | ...

Global site tag (gtag.js) - Google Analytics