快乐数--力扣202

c/c++循环结构例题 (力扣LeetCode 202.快乐数) 题目链接: 力扣 202.快乐数 不想戳的看下图: 解题思路1: 比较基础的思想,直接循环100得出结果,但是,时间复杂度会很高。这里不建议使用。 解题思路2: 使用 “快慢指针” 思想,找出循环:“快指针” 每次走两步,“慢指针” 每次走一步,当二者相等时,即为一个循环周期。此时,判断是不是因为 1 引起的循环,是的话就是快乐数,否则不是快乐数。 注意:此题不建议用集合记录每次的计算结果来判断是否进入循环,因为这个集合可能大到无法存储;另外,也不建议使用递归,同理,如果递归层次较深,会直接导致调用栈崩溃。 阅读详情

题目

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

「快乐数」 定义为:

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

示例 1:

输入:n = 19
输出:true
解释:
12 + 92 = 82
82 + 22 = 68
62 + 82 = 100
12 + 02 + 02 = 1

思路

首先注意题目要求,除非找到快乐数,否则题目是一个无限循环的,那么也就是说求和的过程中,sum会重复出现,我们可以通过判断sum是否出现过来解题。先判断是否sum为1,是则返回true,否则判断是否sum出现过,是则返回false,否则接着循环下去。
判断是否sum出现过且题目不要求排序那么可以使用unordered_set来满足这个要求。
对取数值各个位上的单数操作,如119,119%10得到个位数9,119/10得到剩余的11,继续上述操作即可。

C++代码

class Solution {
public:
    //求和函数
    int Sum(int n){
        int sum = 0;
        while(n){
            sum += (n % 10) * (n % 10);
            n = n / 10;
        }
        return sum;
    }
    bool isHappy(int n) {
        unordered_set<int> set;//用于判断是否重复存在
        int sum = 0;
        while(1){
            sum = Sum(n);
            if(sum == 1) return true;
            if(set.find(sum) != set.end()) {
                //如果重复存在
                return false;
            }else {
                set.insert(sum);
            }
            n = sum;
        }
    }
};
C++实现开心数算法及完整源码 开心数是指一个数的每个数位的平方和不断求和最终等于1的数。例如,19是一个开心数,因为1^2 + 9^2 = 82, 8^2 + 2^2 = 68, 6^2 + 8^2 = 100, 1^2 + 0^2 + 0^2 = 1。本文将介绍如何用C++实现开心数算法,并提供完整的源代码。本文介绍了开心数的概念以及如何用C++实现开心数算法。对于初学者来说,实现开心数算法是一个不错的练手项目,可以锻炼编码能力和逻辑思维。如果最终得到的数等于1,则原数为开心数;否则,原数不是开心数。C++实现开心数算法及完整源码。 阅读详情

相关推荐

分析攻击流量样本

利用wireshark分析.pcap攻击样本的攻击流程,利用漏洞等。

一段旅途 6844

LeetCode-202

202. 快乐数https://leetcode-cn.com/problems/happy-number/ 难度简单 编写一个算法来判断一个数n是不是快乐数。 「快乐数」定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。 如果可以变为 1,那么这个数就是快乐数。 如果n是快乐数就返回true;不是,则返回false。 示例 1: 输入:19 输出:true 解释: 12 ...

FBL 358

华为od 面试八股文_C++_04_含答案

华为od 面试八股文_C++_04_含答案

MISAYAONE的博客 2473

快乐数(C++)

题目:编写一个算法来判断一个数 n 是不是快乐数。 leetcode链接 「快乐数」 定义为: 对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。 如果这个过程 结果为 1,那么这个数就是快乐数。 如果 n 是 快乐数 就返回 true ;不是,则返回 false 。 示例 1: 输入:n = 19 输出:true 解释: 12 + 92 = 82 82 + 22 = 68 62 + 82 = 100 12 + 02 +

weixin_42817333的博客 1380

【python】懂车帝字体反爬逐层解密案例(附完整代码)

懂车帝字体反爬解密,完整代码分享

景天科技苑 2万+

【OpenClaw从入门到精通】第07篇:2026实测!零基础开发OpenClaw自定义Skill——招聘外呼自动邀约完整教程

本文聚焦OpenClaw自定义Skill开发全流程,针对现成技能无法满足个性化场景(如专属招聘流程、内部系统对接)的痛点,以“招聘外呼自动邀约”为实战案例,从概念认知、环境搭建、分步开发到测试优化,手把手教读者从零构建自定义Skill。内容涵盖Skill目录结构、SKILL.md核心配置、Python主逻辑实现、API对接、安全配置等关键环节,融入2026年ClawHavoc事件安全警示,强调最小权限、凭证安全等开发原则。所有代码经实测可运行,步骤详尽且兼顾新手友好与进阶需求。

专注于人工智能、软件开发、工控自动化、工厂数字化及智能化等领域,希望和大家共同进步! 1193

leetcode 202. 快乐数

编写一个算法来判断一个数是不是“快乐数”。一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。示例: 输入: 19 输出: true 解释: 12 + 92 = 82 82 + 22 = 68 62 + 82 = 100 12 + 02 + 02 = 1 ...

zhangyumengs的博客 594

龙芯2K1000 OTG双模驱动深度解析

是Synopsys公司开发的USB 2.0 OTG控制器IP核,龙芯2K1000内置该IP,作为唯一的OTG控制器(PCI Dev4 Func0),物理基地址0x40000000。核心能力:同时支持Host主机模式(接U盘/键盘)、Device设备模式(虚拟串口ttyGS0)、OTG双模自动切换速率驱动路径:内核源码PMON:启用otg0设备树内核:开启HOSTPERIPHERALG_SERIAL启动参数脚本:sysfs角色切换+开机自启Host按以上配置,龙芯2K1000 DWC2 OTG可完美实现。

weixin_44932366的博客 376

快乐数(C++解法)

编写一个算法来判断一个数n是不是快乐数。如果n是快乐数就返回true;不是,则返回false。

m0_62275194的博客 616

Python 爬虫实战:抓取新闻网站上的新闻标题和内容

随着信息化的进展,新闻网站已经成为人们获取新闻和时事资讯的主要途径。许多新闻网站提供了丰富的内容,涵盖了社会、政治、科技、娱乐等多个领域。通过抓取新闻网站的内容,我们可以分析新闻的趋势,获取某一领域的最新动态,甚至为数据分析和机器学习提供数据支持。本文将详细介绍如何使用 Python 编写爬虫,抓取新闻网站上的新闻标题和内容。requests:发送 HTTP 请求,获取页面内容。:解析 HTML 页面并提取数据。Selenium:抓取动态加载的网页内容。新闻API。

2201_76125261的博客 3407

杰理JL701N内置flash录音配置教程

本文详细介绍了内置Flash录音功能的配置方法。主要内容包括:1) 基础模式配置(开启音乐/录音模式、Flash录音宏定义);2) 录音参数设置(格式基准值、存储区域定义、容量配置);3) MP3编码特殊处理;4) 下载时的Flash格式化操作;5) 录音开关和播放接口的使用说明。配置过程涉及多个关键文件的修改,并强调存储容量的精确分配。

qq_42014563的博客 597

【简单】力扣算法题解析LeetCode202:快乐数

题目要求判断一个数是否为快乐数,即通过重复计算各位数字平方和最终得到1。解题采用快慢指针法检测循环:慢指针每次计算一次平方和,快指针计算两次。若快指针变为1,则是快乐数;若快慢指针相遇且不为1,说明进入循环。Java实现中,getNext函数计算平方和,主函数通过指针移动判断结果。该方法优化了空间(O(1))和时间(O(log n))复杂度。示例输入19返回true,2返回false。 关键词: 快乐数、快慢指针、平方和、循环检测、Java实现

ylumwd的博客 375

基于线性约束最小方差准则(LCMV)的自适应波束形成算法的matlab仿真

波束形成(BeamForming)通过对多路麦克风(常为多路全向麦)信号进行合并,抑制非目标方向信号,增强目标方向信号;进而能够实现对特定方向的聚焦拾音,能够有效提高接收信号的信噪比,也有起到降噪的作用。基本原理是波的干涉:通过调整不同阵列单元信号之间的参数,使得某些角度的信号增强,而另一些角度的信号相互抵消,例如下图中来自±45°的输入信号未被增强,而在0度方向的输入信号同相位叠加后被增强。为了将窄带波束形成扩展至宽带,可以使用频域LCMV波束形成器。

平时工作较为繁忙,私信消息一般晚上回复,谢谢大家~~ 763

【优选算法】——Leetcode——202—— 快乐数

1.定义快慢指针2.慢指针每次向后移动一步快指针每次向后移动两步3.判断相遇时候的值即可。

小李很执着的博客 1247

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

LeetCode 202快乐数

LeetCode 202快乐数 题目简述:编写一个算法来判断一个数 n 是不是快乐数。对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。如果 n 是快乐数就返回 True ;不是,则返回 False 。 输入:19 输出:true 解释:12 + 92 = 82 82 + 22 = 68 62 + 82 = 100 12 + 02 + 02 =

XBlog 197

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

day25【LeetCode力扣】202.快乐数

在 while 循环中,每次让快指针走两步,慢指针走一步,如果最终快指针和慢指针相遇,则说明。接着,在 while 循环中,判断快指针的平方和是否等于 1,如果是则返回。,每次循环,让快指针走两步,慢指针走一步。首先,该方法使用双指针法来判断快乐数。

canGfly的博客 664

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

【每日一题】LeetCode202 快乐数

方法优点缺点适用场景哈希集合法直观易懂,代码简单占用较多内存快速实现,数据量不大时快慢指针法零额外空间,内存效率最高需要理解双指针运动规律内存敏感场景,如嵌入式练习建议:可以用数字 19(快乐数)和 2(非快乐数)手动模拟两种方法的执行过程,加深理解。

2302_79600390的博客 1176

LeetCode第202题_快乐数

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

qq_40263592的博客 724

LeetCode 202. 快乐数

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

2301_80211119的博客 984

力扣(LeetCode)202. 快乐数

编写一个算法来判断一个数是不是“快乐数”。 一个“快乐数”定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是无限循环但始终变不到 1。如果可以变为 1,那么这个数就是快乐数。 示例: 输入: 19 输出: true 解释: 12 + 92 = 82 82 + 22 = 68 62 + 82 = 100 12 + 02 + 02 = 1...

weixin_30306905的博客 171

Leetcode202(力扣202):快乐数

方法一:使用set存放 用set存放不是快乐数的可能性,重点是找到循环节点(我们认为非快乐数都会进入一个循环) class Solution { public: int calculate(int n) { int now=0; while(n) { now+=(n%10)*(n%10); n=n/10; } return now; } bool isHappy(int n

weixin_44537258的博客 245

202. 快乐数(力扣LeetCode)

判断sum是否重复出现就可以使用unordered_set。编写一个算法来判断一个数 n 是不是快乐数。这道题目看上去貌似一道数学问题,其实并不是!

m0_73841621的博客 647

202. 快乐数【 力扣(LeetCode) 】

编写一个算法来判断一个数 n 是不是快乐数。如果 n 是 快乐数 就返回 true;不是,则返回 false。

yyh520025的博客 847

力扣[LeetCode].202. 快乐数

class Solution { public: //先实现一下函数 int get(int x){ int res=0; while(x){ res +=(x%10)*(x%10); x/=10; } return res; } bool isHappy(int n) { int fast =get(n),slow=n; .

C/C++/Linux/MySQL 604

LeetCode 202: 快乐数

目录LeetCode 202: 快乐数题目描述解题哈希快慢指针数学法 LeetCode 202: 快乐数 题目描述 编写一个算法来判断一个数 n 是不是快乐数。 「快乐数」定义为:对于一个正整数,每一次将该数替换为它每个位置上的数字的平方和,然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。如果 可以变为 1,那么这个数就是快乐数。 如果 n 是快乐数就返回 True ;不是,则返回 False 。 【 示例】 输入:19 输出:true 解释: 12 + 92 = 82 82

s_Shune 259
上一篇: OpenCV--图像金字塔
下一篇: CNN在处理文本和图像时有什么共同点和不同点
醉后才知酒浓
博客等级 码龄6年 499粉丝 85原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

醉后才知酒浓

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值