本文介绍: (2)这里受某位大佬思路指导,在本题中并没有限制空间,但是如果这个循环非常大的时候就会出现oom的情况。参考快慢指针链表循环其实快慢指针可以用于所有的循环判断,用O(1)的空间复杂度实现对循环的判断。(1)循环的判断可以采用hash表的方法,当结果出现过同时不为1的时候说明已经循环了,return false然后重复这个过程直到这个数变为 1,也可能无限循环 但始终变不到 1。对于一个正整数,每一次该数替换为它每个位置上的数字平方和。如果这个过程 结果为 1,那么这个就是快乐数。

题目

编写一个算法判断一个数 n 是不是快乐数。

快乐数」 定义为:

对于一个正整数,每一次该数替换为它每个位置上的数字平方和
然后重复这个过程直到这个数变为 1,也可能无限循环 但始终变不到 1。
如果这个过程 结果为 1,那么这个数就是快乐数。
如果 n 是 快乐数 就返回 true ;不是,则返回 false
在这里插入图片描述

题解

题目简单题,本身主要有两个可以总结
(1)循环的判断,可以采用hash表的方法,当结果出现过同时不为1的时候说明已经循环了,return false
(2)这里受某位大佬思路指导,在本题中并没有限制空间,但是如果这个循环非常大的时候就会出现oom的情况。参考快慢指针解链表循环,其实快慢指针可以应用于所有的循环判断,用O(1)的空间复杂度实现对循环的判断。
代码

代码

class Solution {
public:
    int get_num_pingfang(int n){
        int sum_ = 0;
        while(n){
            sum_ += (n%10)*(n%10);
            n = n/10;
        }
        return sum_;
    }
    bool isHappy(int n) {
        int slow=n, fast=n;
        do{
            slow = get_num_pingfang(slow);
            fast = get_num_pingfang(fast);
            fast = get_num_pingfang(fast);
        }while(slow!=fast);
        return slow==1;

    }
};

原文地址:https://blog.csdn.net/qq_40742298/article/details/134769928

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_38284.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注