A12:快乐数

发现快乐数有如下特征:

1、如果一个数“不快乐”,则它计算到后面必然陷入到这个循环里:4, 16, 37, 58, 89, 145, 42, 20, 4, ...

2、对于一个大于243的数字来说,它的下一个数字一定比它小。这是因为一个大于1000的数字,它的下一个数字一定比它小,而对于1000以下最大的数字999,它的下一个数字是243,所以1000以下数字的下一个数字也只可能小于或等于243

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

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

您在真实的面试中是否遇到过这个题?

样例

19 就是一个快乐数。

1^2 + 9^2 = 82
8^2 + 2^2 = 68
6^2 + 8^2 = 100
1^2 + 0^2 + 0^2 = 1

 1 public class Solution {
 2     /**
 3      * @param n an integer
 4      * @return true if this is a happy number or false
 5      */
 6     boolean isHappy(int n) {
 7         // Write your code here
 8         int temp = n;
 9         while(true){
10             temp = getNext(temp);
11             if(temp > 243){
12                 continue;
13             }else if(temp == 4 || temp == 16 || temp == 37 || temp == 58 || temp== 89 || temp == 145 || temp ==42|| temp ==20 || temp ==4){
14                 return false;
15             }
16             if(temp == 1){
17                 return true;
18             }
19         }
20     }
21
22     int getNext(int m){
23         int result = 0;
24         while(m>0){
25             result = result + (m%10) * (m % 10);
26             m = m / 10;
27         }
28         return result;
29     }
30 }
时间: 2024-12-07 05:10:31

A12:快乐数的相关文章

LeetCode:Happy Number - 快乐数

1.题目名称 Happy Number(快乐数) 2.题目地址 https://leetcode.com/problems/happy-number/ 3.题目内容 英文: Write an algorithm to determine if a number is "happy". A happy number is a number defined by the following process: Starting with any positive integer, repla

LintCode_488 快乐数

题目 写一个算法来判断一个数是不是"快乐数". 一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,然后重复这个过程直到这个数变为1,或是无限循环但始终变不到1.如果可以变为1,那么这个数就是快乐数. 样例 19 就是一个快乐数. 1^2 + 9^2 = 82 8^2 + 2^2 = 68 6^2 + 8^2 = 100 1^2 + 0^2 + 0^2 = 1 hash方式实现C++代码 bool isHappy(int n) { // Writ

快乐数问题

问题描述:设计一个算法,判断一个数字是否是“快乐数”.快乐数的定义如下:一个正整数,计算出它各位数字的平方和,得到一个新的数字,再对这个新的数字重复这一过程,直到最后得到数字1或是其他某几个数字的无限循环.在这些数字中,经过上述流程最终能得到数字1的数字,被称为“快乐数”. 分析:整个算法的设计分为两步 第一步:求数下一个平方计算后的数. 第二步:判断数值是否是快乐数. 解法一:分两步进行,第一步计算下一个数,第二步做判断,可以利用一个容器保存计算过的数,只要出现1就直接返回是,如果出现重复的非

lintcode:快乐数

快乐数 写一个算法来判断一个数是不是"快乐数". 一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,然后重复这个过程直到这个数变为1,或是无限循环但始终变不到1.如果可以变为1,那么这个数就是快乐数. 样例 19 就是一个快乐数. 1^2 + 9^2 = 82 8^2 + 2^2 = 68 6^2 + 8^2 = 100 1^2 + 0^2 + 0^2 = 1 解题定义最大循环次数方法 public class Solution { /** *

LintCode Python 简单级题目 488.快乐数

题目描述: 写一个算法来判断一个数是不是"快乐数". 一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,然后重复这个过程直到这个数变为1,或是无限循环但始终变不到1.如果可以变为1,那么这个数就是快乐数. 您在真实的面试中是否遇到过这个题? Yes 样例 19 就是一个快乐数. 1^2 + 9^2 = 82 8^2 + 2^2 = 68 6^2 + 8^2 = 100 1^2 + 0^2 + 0^2 = 1 标签 数学 哈希表 题目分析: 将数

488 快乐数

原题网址:https://www.lintcode.com/problem/happy-number/description 描述 写一个算法来判断一个数是不是"快乐数". 一个数是不是快乐是这么定义的:对于一个正整数,每一次将该数替换为他每个位置上的数字的平方和,然后重复这个过程直到这个数变为1,或是无限循环但始终变不到1.如果可以变为1,那么这个数就是快乐数. 您在真实的面试中是否遇到过这个题?  是 样例 19 就是一个快乐数. 1^2 + 9^2 = 82 8^2 + 2^2

关于快乐数的算法

本人在面试某国企的过程中被要求用手机编写快乐数算法,由于当时嫌弃麻烦所以就没写.后来在家呆着无聊想起来就写了个例子. 快乐数的概念:在给定的进位制下,该数字所有数位(digits)的平方和,得到的新数再次求所有数位的平方和,如此重复进行,最终结果必为1. 例子:2 8 → 22+82=68 → 62+82=100 → 12+02+02=1 以下是代码: private bool IsHappyNum(int num, List<int> lastNum) { if (lastNum == nu

“肥宅快乐数”-python暴力版

编写一个函数来判断一个数是不是"快乐数".一个"快乐数"定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1.如果可以变为 1,那么这个数就是快乐数 num = input('请输入数字>>>').strip() new_num = num if num.isdigit(): sum1 = 0 check = [] while sum1 !=1: for i in

202. 快乐数 | Happy Number

Write an algorithm to determine if a number is "happy". A happy number is a number defined by the following process: Starting with any positive integer, replace the number by the sum of the squares of its digits, and repeat the process until the