首页 > 其他分享 >【LeeCode】202. 快乐数

【LeeCode】202. 快乐数

时间:2023-01-08 17:32:36浏览次数:58  
标签:10 202 int Solution LeeCode 快乐 isHappy new true

【题目描述】

编写一个算法来判断一个数 ​​n​​ 是不是快乐数。

「快乐数」 定义为:

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

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


【示例】

【LeeCode】202. 快乐数_Math

​【代码】官方​

正如我在【admin】里面说的一样, n的各位数进行平方后可能进入一个循环, 所以我们需要一个set保留中间结果。

【LeeCode】202. 快乐数_Test_02

package com.company;
// 2023-1-8

import java.util.HashSet;
import java.util.Set;

class Solution {
private int getNext(int n) {
int total = 0;
while (n > 0){
int d = n % 10;
n = n / 10;
total += d * d;
}
return total;
}
public boolean isHappy(int n) {
Set<Integer> seen = new HashSet<>();
while (n != 1 && !seen.contains(n)){
seen.add(n);
n = getNext(n);
}
return n == 1;
}
}
public class Test {
public static void main(String[] args) {
new Solution().isHappy(19); // 输出: true
new Solution().isHappy(7); // 输出: true
new Solution().isHappy(2); // 输出: false
new Solution().isHappy(1111111); // 输出: true
}
}

【代码】admin

通过率: 403/402  卡在了"1111"上, 因为这个叠加出来后的值是7, double后又回到大于10的场景了

不研究了, 研究一下大神的模板

package com.company;
// 2023-1-7

class Solution {
public boolean isHappy(int n) {
if (n < 1 ) return false;
// 这里有些数, double后悔进入到
while (n >= 2 && n <= 9){
int tmp = 0;
tmp += Math.pow(n % 10, 2);
n = tmp;
}


while ( n >=10 ){
int tmp = 0;
while (n > 0){
tmp += Math.pow(n % 10, 2);
n = n / 10;
}
n = tmp;
}
return n == 1;
}
}
public class Test {
public static void main(String[] args) {
new Solution().isHappy(19); // 输出: true
new Solution().isHappy(7); // 输出: true
new Solution().isHappy(2); // 输出: false
new Solution().isHappy(1111111); // 输出: true
}
}


标签:10,202,int,Solution,LeeCode,快乐,isHappy,new,true
From: https://blog.51cto.com/u_13682316/5996724

相关文章

  • 【LeeCode】1295. 统计位数为偶数的数字
    【题目描述】给你一个整数数组 ​​nums​​,请你返回其中位数为 偶数 的数字的个数。​​​https://leetcode.cn/problems/find-numbers-with-even-number-of-digits/des......
  • 2023寒假训练week0
    Day1蓝桥杯模拟赛A.带分数题意大致是用[1,9]之间的数来构造一个带分数,而且[1,9]必须每个都出现一次这不就是全排列吗?1.我们可以用c++的stl函数,也可dfs深搜2.将这个全......
  • 2023-1-8 #25 只剩一点变质尘土 供我当成全部抓住
    135P7881[Ynoi2006]rmpq操作分块,散块很好处理,每个整块提取出根号条横线与竖线将平面划分成\(O(n)\)个区域,询问枚举整块,直接二分定位到对应区域(这里可以不用分散层叠,......
  • 2023年谷歌SEO购买外链必定指南,Google购买反向链接攻略
    本文由光算创作,分享本年最新的谷歌外链购买指南,涵盖了很多干货。本文有可能会被修改和剽窃,我们佛系对待这种行为吧。我们得出的一个大数据模型可以看到,就算你的外贸网站能持......
  • One Bamboo Contest Round #12(Clone from 2020 ICPC Shenyang)
    G.TheWitchwood签到#include<bits/stdc++.h>#defineintlonglongusingnamespacestd;intread(){intx=0,ch=getchar();while(ch<'0'||c......
  • Good Bye 2022: 2023 is NEAR
    中文题面中文题解A.KoxiaandWhiteboards因为必须要对\(a_i\)做替换,那么把\(a_i\)中最小的替换掉是最优的#include<bits/stdc++.h>#defineintlonglongusingnam......
  • 牛客2022跨年场
    B.分赃首先统计只有一个的数字个数,如果是偶数就平均分给两个人,然后把剩下的数字全部分给任意一个人。如果是奇数个,就看时候有数字的数量大于三,如果有,就把这个数字的其中......
  • One Bamboo Contest Round #11(Clone from 2022 ICPC Manila)
    马尼拉区域赛题目出得还是不错的,只是感觉大多数参赛队伍的水平不太行,我们这样的队伍居然能苟到铜牌A.AnEasyCalculusProblem签到#include<bits/stdc++.h>#define......
  • Metagenome多样性分析&差异分析 2023.01.07
    宏基因组数据组装及注释测序文件-组装(megahit,fq1fq2-A1.contigs.fa)-基因预测(prokka,A1.contigs.fa- faaffn)- 去冗余(cd-hit;faaffn- all.cds.cdhit/unigene序列文......
  • 【LeeCode】7. 整数反转
    【题目描述】给你一个32位的有符号整数 ​​x​​​ ,返回将 ​​x​​ 中的数字部分反转后的结果。如果反转后整数超过32位的有符号整数的范围 ​​[−231, 231......