zoukankan      html  css  js  c++  java
  • Happy Number 分类: Leetcode(查找) 2015-07-17 10:00 2人阅读 评论(0) 收藏

    1. 题目

    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

    • 2 + 9 2 = 82
    • 2 + 2 2 = 68
    • 2 + 8 2 = 100
    • 2 + 0 2 + 0 2 = 1
    简单的水题,用hash表去判断有无重复。一个巧妙的解题思路是,对于循环重复的情况,可以用slow和fast两个变量来代替hash表。

    class Solution {
    public:
        bool isHappy(int n) {
            if (n < 1)
                return false;
            if (n == 1)
                return true;
            unordered_set<int> showedNums;
            showedNums.insert(n);
            
            while(true) {
                int s = 0;
                while(n){
                    s +=(n%10)*(n%10);
                    n = n / 10;
                }
                if(s==1)
                    return true;
                else if(showedNums.find(s)!=showedNums.end())
                    return false;
                n = s;
                showedNums.insert(s);
            }
            
            
        }
    };

    class Solution {
    public:
    
        int cal(int n){
            int s = 0;
            while(n){
                s +=(n%10)*(n%10);
                n /= 10;
            }
            return s;
        }
        bool isHappy(int n) {
            if (n < 1)
                return false;
            if (n == 1)
                return true;
            int slow=n,fast=n;
            do {
                slow = cal(slow);
                fast = cal(fast);
                fast = cal(fast);
            }while(slow != fast);
            if(slow ==1) return 1;
            else return 0;
            
            
        }
    };



    版权声明:本文为博主原创文章,未经博主允许不得转载。

  • 相关阅读:
    C# GDI+图形程序设计看书笔记
    SQL2008转SQL2005
    vb6 调用 .Net Dll
    VS编译后的postevent
    Bind 和 ScaffoldColumn
    转: MarshalAs与StructLayout
    Microsoft .NET Compact Framework 开发常见问题解答
    .Net2.0 使用ConfigurationManager读写配置文件
    在.NET中使用命名管道完成进程间通信[转]
    C# 取电信公网IP并发送邮件
  • 原文地址:https://www.cnblogs.com/learnordie/p/4656926.html
Copyright © 2011-2022 走看看