OJ Lintcode 快乐数

作者: DayDayUpppppp | 来源:发表于2017-02-19 19:48 被阅读9次

写一个算法来判断一个数是不是"快乐数"。
一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,然后重复这个过程直到这个数变为1,或是无限循环但始终变不到1。如果可以变为1,那么这个数就是快乐数。

image.png
class Solution {
    
public:
    /**
     * @param n an integer
     * @return true if this is a happy number or false
     */
    bool isHappy(int n) {
        // Write your code here
        int sum = n;
        
        while(true)
        {
            sum = numSum(sum);
            if(sum == 4)
            {
                break;
            }
            
            if(sum == 1)
            {
                return true;
            }
        }
        
        
        return false;
    }
    
    int numSum(int n)
    {
        int sum = 0;
        int x;
        while(n != 0)
        {
            x = n % 10;
            n = n /10;
            sum += x * x;
        }
        
        return sum;
    }
};

相关文章

  • OJ Lintcode 快乐数

    写一个算法来判断一个数是不是"快乐数"。一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置...

  • OJ lintcode 左填充

    实现一个leftpad库,如果不知道什么是leftpad可以看样例您在真实的面试中是否遇到过这个题?Yes样例le...

  • OJ lintcode 移动零

    给一个数组 nums 写一个函数将 0 移动到数组的最后面,非零元素保持原数组的顺序注意事项1.必须在原数组上操作...

  • OJ lintcode 哈希函数

    在数据结构中,哈希函数是用来将一个字符串(或任何其他类型)转化为小于哈希表大小且大于等于零的整数。一个好的哈希函数...

  • OJ lintcode 中位数

    给定一个未排序的整数数组,找到其中位数。中位数是排序后数组的中间值,如果数组的个数是偶数个,则返回排序后数组的第N...

  • OJ lintcode 链表划分

    给定一个单链表和数值x,划分链表使得所有小于x的节点排在大于等于x的节点之前。你应该保留两部分内链表节点原有的相对...

  • OJ lintcode 最长单词

    给一个词典,找出其中所有最长的单词。您在真实的面试中是否遇到过这个题?Yes样例在词典{"dog","google...

  • OJ lintcode 加一

    给定一个非负数,表示一个数字数组,在该数的基础上+1,返回一个新的数组。该数字按照大小进行排列,最大的数在列表的最...

  • OJ:lintcode 整数排序

    给一组整数,按照升序排序,使用选择排序,冒泡排序,插入排序或者任何 O(n2) 的排序算法。您在真实的面试中是否遇...

  • OJ:lintcode A + B 问题

    给出两个整数a和b, 求他们的和, 但不能使用 + 等数学运算符。注意事项你不需要从输入流读入数据,只需要根据ap...

网友评论

    本文标题:OJ Lintcode 快乐数

    本文链接:https://www.haomeiwen.com/subject/teijwttx.html