博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
快乐数
阅读量:5157 次
发布时间:2019-06-13

本文共 1039 字,大约阅读时间需要 3 分钟。

写一个算法来判断一个数是不是"快乐数"。

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

如果可以变为1,那么这个数就是快乐数。

样例

19 就是一个快乐数。

mathtex.cgi?%20%5Cnormalsize%5C%201%5E2%20+%209%5E2%20&=&%2082mathtex.cgi?%20%5Cnormalsize%5C%201%5E2%20+%209%5E2%20&=&%2082mathtex.cgi?%20%5Cnormalsize%5C%208%5E2%20+%202%5E2%20&=&%2068mathtex.cgi?%20%5Cnormalsize%5C%206%5E2%20+%208%5E2%20&=&%20100mathtex.cgi?%20%5Cnormalsize%5C%201%5E2%20+%200%5E2+%200%5E2%20&=&%2082

解题思路

这道题其实计算所有数字的平方和直到为1为止是比较简单的,也就是说只要一直循环计算直到确定为快乐数即可,但比较麻烦的是如何判断不是快乐数,结束无限循环;

为此我们开了一个哈希表,将每次计算的平方和放入其中,如果某次计算出的值在哈希表中存在,则说明这个数不是快乐数,即可返回FALSE。

public class Solution {    /**     * @param n an integer     * @return true if this is a happy number or false     */    public long sum_square(long n){        long sum = 0;        while(n!=0){            sum += Math.pow(n%10,2);            n = n/10;        }        return sum;    }    public boolean isHappy(int n) {        // Write your code here        if(n<0)  return false;        long nn = n ;        Set
set = new HashSet
(); while(true){ if(set.contains(nn)){ return false; } else{ set.add(nn); } nn = sum_square(nn); if(nn==1) return true; } }}

转载于:https://www.cnblogs.com/wangnanabuaa/p/5125915.html

你可能感兴趣的文章
Hive(7)-基本查询语句
查看>>
注意java的对象引用
查看>>
C++ 面向对象 类成员函数this指针
查看>>
NSPredicate的使用,超级强大
查看>>
自动分割mp3等音频视频文件的脚本
查看>>
判断字符串是否为空的注意事项
查看>>
布兰诗歌
查看>>
js编码
查看>>
Pycharm Error loading package list:Status: 403错误解决方法
查看>>
steps/train_sat.sh
查看>>
转:Linux设备树(Device Tree)机制
查看>>
iOS 组件化
查看>>
(转)Tomcat 8 安装和配置、优化
查看>>
(转)Linxu磁盘体系知识介绍及磁盘介绍
查看>>
tkinter布局
查看>>
命令ord
查看>>
Sharepoint 2013搜索服务配置总结(实战)
查看>>
博客盈利请先考虑这七点
查看>>
使用 XMLBeans 进行编程
查看>>
写接口请求类型为get或post的时,参数定义的几种方式,如何用注解(原创)--雷锋...
查看>>