首页 > 解决方案 > happynumber code Time Limit Exceeded 问题

问题描述

问题是: 编写一个算法来确定一个数字 n 是否“快乐”。

快乐数字是由以下过程定义的数字:从任何正整数开始,将数字替换为其数字的平方和,然后重复该过程直到数字等于 1(它将保持不变),或者循环在一个不包括 1 的循环中无限循环。这个过程以 1 结束的那些数字是快乐数字。

如果 n 是一个快乐的数字,则返回 True,否则返回 False。

我的解决方案如下。

class Solution:
    def isHappy(self, n: int) -> bool:
        flag = True
        while flag:
            try:
                result = self.passExam(n)
                if result == 1:
                    flag = False
                else:
                    self.passExam(result)
            except:
                return False
        # print('passed')
        return True

    def passExam(self, n: int) -> int:
        result = 0
        list = str(n)
        # Loop through indices in n
        for i in range(len(list)):
            # print(f'{i}th : {list[i]}')
            # Store a square number
            num = int(list[i])
            num = num * num
            result = result + num
        # print(f'result is {result}')
        return result

标签: python-3.x

解决方案


class Solution:
    def isHappy(self, n: int) -> bool:
        sum = self.passExam(n)
        seen = set()
        flag = True
        while flag:
            if sum in seen:
                return False
            elif sum == 1:
                return True
            else:
                seen.add(sum)
                sum = self.passExam(sum)


    def passExam(self, n: int) -> int:
        result = 0
        list = str(n)
        # Loop through indices in n
        for i in range(len(list)):
            # print(f'{i}th : {list[i]}')
            # Store a square number
            num = int(list[i])
            num = num * num
            result = result + num
        # print(f'result is {result}')
        return result

推荐阅读