力扣-202题 快乐数(C++)- 哈希

题目链接:https://leetcode-cn.com/problems/happy-number/
题目如下:
力扣-202题 快乐数(C++)- 哈希_第1张图片
力扣-202题 快乐数(C++)- 哈希_第2张图片

class Solution {
public:
    int calculate_sum(int num){
        int result=0;

        while(num!=0){
            int number=num%10;
            result+=number*number;
            num=num/10;
        }

        return result;
    }

    bool isHappy(int n) {
        //if(n==1) return true;
        //注:题目中的无限循环,即求和的过程中,sum会重复出现
        //当遇到要快速判断一个元素是否出现集合里的时候,考虑哈希法
        
        unordered_set<int> uset;

        int num=calculate_sum(n);

        while(1){

            if(uset.count(num)!=0) return false;
            else uset.insert(num);

            if(num==1) return true;
            num=calculate_sum(num);
        }
        
    }
};

你可能感兴趣的:(#,简单题)