引言

题目:编写一个算法来判断一个数n是不是快乐数

来源:网友分享的面试算法题

题目描述

【快乐数定义】

对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。

然后重复这个过程直到这个数变为1,也可能是 无限循环,但始终变不到1。

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

如果n是快乐数就返回true;不是,则返回false.

示例

示例1

输入:n=19
输出:ture
解释:
1² + 9² = 82
8² + 2² = 68
6² + 8² = 100
1² + 0² + 0² = 1

示例2

输入:n=2
输出:false

解法1

循环写法

    /**
* 是否是快乐数(循环写法)
*
* @param number 需要验证的正整数
* @return 返回是否是快乐数
*/
public static boolean isHappyMethod1(int number) {
int tempNumber = number;
boolean isHappyNumber = false;
while (true) {
int sum = 0;
while (tempNumber != 0) {
int a = tempNumber % 10;
sum = sum + a * a;
System.out.print(a + "² ");
tempNumber = tempNumber / 10;
}
System.out.println(" = " + sum);
if (sum == 1) {
isHappyNumber = true;
break;
} else if (sum == 4) {
//当为4的时候,会进入死循环
break;
} else {
tempNumber = sum;
}
}
return isHappyNumber;
}

解法2

递归写法

/**
* 是否是快乐数(递归写法)
*
* @param number 需要验证的正整数
* @return 返回是否是快乐数
*/
public static boolean isHappyMethod2(int number) {
if (number == 4) {
return false;
}
int sum = 0;
while (number != 0) {
int a = number % 10;
sum = sum + a * a;
System.out.print(a + "² ");
number = number / 10;
}
System.out.println(" = " + sum);
if (sum == 1) {
return true;
} else {
return isHappyMethod2(sum);
}
}

提示:

如果一个数不是快乐数,经过有限次循环之后,必定会进入一个死循环,且这个死循环都是从

4——>16——>37——>58——>89——>145——>42——>20——>4

判断一个数n是不是快乐数的更多相关文章

  1. JS使用三元运算符判断三个数中最大的数

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  2. 力扣Leetcode 202. 快乐数 -快慢指针 快乐就完事了

    快乐数 编写一个算法来判断一个数 n 是不是快乐数. 「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不 ...

  3. LeetCode202. 快乐数

    题目 编写一个算法来判断一个数 n 是不是快乐数. 快乐数定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1, 也可能是 无限循环 但始终变不到 ...

  4. 力扣(LeetCode)202. 快乐数

    编写一个算法来判断一个数是不是"快乐数". 一个"快乐数"定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 ...

  5. Java判断一个数是不是快乐数

    快乐数的定义: 快乐数(happy number)有以下的特性: 在给定的进位制下,该数字所有数位(digits)的平方和,得到的新数再次求所有数位的平方和,如此重复进行,最终结果必为1. 以十进制为 ...

  6. 海量数据找相同数,高配词,不重复的数,判断一个数是否存在,查询串,不同电话号码的个数,中位数,按照query频度排序,topk

    这类题目,首先需要确定可用内存的大小,然后确定数据的大小,由这两个参数就可以确定hash函数应该怎么设置才能保证每个文件的大小都不超过内存的大小,从而可以保证每个小的文件都能被一次性加载到内存中. 1 ...

  7. [LeetCode] Happy Number 快乐数

    Write an algorithm to determine if a number is "happy". A happy number is a number defined ...

  8. 如何判断一个数是否为素数(zt)

    怎么判断一个数是否为素数? 笨蛋的作法: bool IsPrime(unsigned n){    if (n<2)    { //小于2的数即不是合数也不是素数    throw 0;    ...

  9. (Miller Rabin算法)判断一个数是否为素数

    1.约定 x%y为x取模y,即x除以y所得的余数,当x<y时,x%y=x,所有取模的运算对象都为整数. x^y表示x的y次方.乘方运算的优先级高于乘除和取模,加减的优先级最低. 见到x^y/z这 ...

  10. LeetCode:快乐数【202】

    LeetCode:快乐数[202] 题目描述 编写一个算法来判断一个数是不是“快乐数”. 一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数 ...

随机推荐

  1. Serverless Kubernetes:理想,现实与未来

    简介: 当前 Serverless 容器的行业趋势如何?有哪些应用价值?如果 Kubernetes 天生长在云上,它的架构应该如何设计?Serverless 容器需要哪些基础设施?阿里云容器服务产品负 ...

  2. 深度解析开源推荐算法框架EasyRec的核心概念和优势

    ​简介:如何通过机器学习PAI实现快速构建推荐模型 作者:程孟力 - 机器学习PAI团队 随着移动app的普及,个性化推荐和广告成为很多app不可或缺的一部分.他们在改善用户体验和提升app的收益方面 ...

  3. 智能数据构建与管理平台Dataphin的前世今生:缘起

    简介: 阿里巴巴提出的OneData方法论帮助企业捋清了数据全生命周期的管理思路,更将其植入到产品Dataphin(智能数据构建与管理)中,通过阿里云为企业提供服务. Dataphin 智能数据构建与 ...

  4. [GPT] Linux 如何查看 crontab 的运行记录

      要查看crontab的运行记录,可以使用以下命令: $ grep CRON /var/log/syslog 或者 $ tail /var/log/syslog 这将在 /var/log/syslo ...

  5. [ML] 通过llama.cpp与羊驼聊天的网页界面- 详解 Serge 的启动使用

      Serge 虽然能够让我们在笔记本上跑起来 7B模型, 但实际运行非常消耗CPU,对话生成响应非常非常慢. 1. 官方指导是使用如下命令直接运行: $ docker run -d -v weigh ...

  6. 支持 dotnet 6 的 dnSpy 神器版本

    官方的 dnSpy 在 2021 时,由于某些吃瓜的原因 wtfsck 将 dnSpy 给 Archived 掉,在大佬被哄好之前,预计是不再更新.最新官方版本对 dotnet 6 的支持较弱,对于很 ...

  7. 前端关于获取网络时间的方法api

    淘宝 http://api.m.taobao.com/rest/api3.do?api=mtop.common.getTimestamp 苏宁http://quan.suning.com/getSys ...

  8. golang、JS AES(CBC模式)加密解密兼容

    目录 golang.JS AES(CBC模式)加密解密兼容 golang代码 前端javascript的代码 aes.js 原文地址: https://www.cnblogs.com/haima/p/ ...

  9. ibus 输入法导致输入卡顿的解决方案

    系统: Zorin OS 16 Pro 基于 Ubuntu 20.04 LTS 关键词:Linux 间歇性卡顿.输入法导致卡顿.无法输入 本问题发生的情形是系统间歇性的无法接受键盘输入,无意间发现切换 ...

  10. PHP实现没有数据库提交form表单到后台并且显示出数据列表(Vuejs和Element-UI前端设计表单)

    1.情境:如果你新建了个网站,却没有数据库服务器,如何把你的表单信息,提交到服务端后台,收集数据. 2.思路:如果用传统的form action 提交到一个form.php页面,此时只能存储一次数据, ...