题解 | 快乐数

快乐数

https://www.nowcoder.com/practice/293b9ddd48444fa493dd17da0feb192d

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 
     * @param n int整型 
     * @return bool布尔型
     */
    stack<int> stk;
    set<int> looptest;
    stack<int> extract(int n){
        stack<int> s;
        while(n){
            s.push(n%10);
            n/=10;
        }
        return s;
    }
    int happysum(stack<int> s){
        long long sum=0;
        while(!s.empty()){
            sum+=(s.top()*s.top());
            s.pop();
        }
        return sum;
    }
    bool happynum(int n) {
        // write code here
        looptest.insert(n);
        int sum = n;
        while(true){
            stk=extract(sum);
            sum=happysum(stk);
            if(sum==1) return true;
            if(!looptest.count(sum)){
                looptest.insert(sum);
            }else{
                return false;
            }
        }
        return true; 
    }
};

进入循环则不是快乐数。函数里尽量用局部栈局部变量...不然bug多。

全部评论
base南京OD,有大量的HC,考虑的话,可以私聊我哦
点赞 回复 分享
发布于 2025-08-16 14:40 贵州

相关推荐

01-30 22:03
门头沟学院 Java
用微笑面对困难:我滴妈,【俩月】【实习】【主管】仨debuff吃满了,独立设计开发的项目写了绝大占比的运营板块,你独立开发,那维护、问题复盘、日志更新、bug、策划书全是自己整的? 不建议写那么大,可以从小出发更容易
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务