leetcode_c++:哈希: Happy Number(202)

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

12+92=82
82+22=68
62+82=100
12+02+02=1


算法

O(N)

hash的方法

//
//  main.cpp
//  CplusplusTest
//
//  Created by mijian on 16/7/1.
//  Copyright © 2016年 mijian. All rights reserved.
//

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include

using  namespace std;

class Solution {
public:
    bool isHappy(int n) {
        unordered_set<int>  vis;

        while(vis.find(n)==vis.end()){
            vis.insert(n);
            int tmp=0;
            while(n){
                tmp+=(n%10)*(n%10);
                n/=10;
            }

            n = tmp;
            if(n==1)
                return true;
        }

        return false;

    }
};


int main(){
    Solution s;
    int n;
    for(n=0;n<10000;++n){
        if(s.isHappy(n))
            cout<", ";
    }

    return 0;
}

你可能感兴趣的:(leetcode(c++))