LeetCode 202. 快乐数

LeetCode 202. 快乐数

1、题目

力扣题目链接:202. 快乐数
编写一个算法来判断一个数 n 是不是快乐数。
「快乐数」 定义为:

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

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

示例 1:

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

示例 2:

输入:n = 2
输出:false

提示:

  • 1 <= n <= 231 - 1

2、哈希法

代码

class Solution {
public:// 求数值各个位上的平方和  int getSum(int n) {  int sum = 0;while (n) {  sum += (n % 10) * (n % 10);  n /= 10;  }  return sum;  }  bool isHappy(int n) {  // 创建一个无序集合set,用于存储平方和,以便检查是否有重复  unordered_set<int> set;   int sum = 0;  // 无限循环,直到sum等于1或set中已有sum时停止  while (1) {  // 计算n的平方和 sum = getSum(n);  // 如果平方和sum等于1,说明是快乐数,返回true  if (sum == 1) {  return true;  }  // 如果set中已有sum,说明不是快乐数,返回false  if (set.find(sum) != set.end()) {  return false;  } else {  // 将新的平方和sum加入set中,并对n进行更新,为下一次循环做准备  set.insert(sum);  n = sum;  }  }  }  
};

image.png

复杂度分析

  • 时间复杂度: O(logn)

  • 空间复杂度: O(logn)

3、双指针法

代码

class Solution {  
public:  // 计算一个整数的各位数字的平方和  int getSum(int n) {    int sum = 0;  while (n) {    sum += (n % 10) * (n % 10);    n /= 10;    }    return sum;    }    bool isHappy(int n) {    // 计算n的平方和,赋值给slow,slow可以看作是n的移动轨迹或者说是“速度慢的点”  int slow = getSum(n);  // 计算slow的平方和,赋值给fast,fast可以看作是“速度快的点”或者说是指向slow的“指针”  int fast = getSum(getSum(n));  // 当fast不等于1且slow不等于fast时,执行下面的循环  while (fast != 1 && slow != fast) {  // slow的值加1,即求slow的平方和,相当于让slow这个“点”移动到新的位置  slow = getSum(slow);  // fast的值加1,即求fast的平方和,相当于让fast这个“指针”指向新的位置  fast = getSum(getSum(fast));  }  // 返回fast是否等于1的结果,即判断是否循环到最后得到1,如果是则返回true(真),否则返回false(假)  return fast == 1;  }    
};

image.png

复杂度分析

  • 时间复杂度:O(log⁡n)

  • 空间复杂度:O(1)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/820020.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于 Windows10 计算机丢失 MSVCP120.dll 的解决方法

今天学长跟平时一样打开电脑开始发布文章需要用到Adobe Photoshop CC 2018的时候居然给我来个Photoshop.exe-系统错误、无法启动此程序&#xff0c;因为计算机中丢失MSVCP120.dll 尝试重新安装该程序以解决此问题&#xff0c;安装上面的说明重新安装了我的Photoshop CC 打开还是…

(八)PostgreSQL的数据库管理

PostgreSQL的数据库管理 基础信息 OS版本&#xff1a;Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本&#xff1a;16.2 pg软件目录&#xff1a;/home/pg16/soft pg数据目录&#xff1a;/home/pg16/data 端口&#xff1a;57771 创建数据库 CREATE DATABASE创建一…

财务数字化转型如何找到打通业财融合的关键点

随着企业信息联网核查系统上线及即将到来的金税四期&#xff0c;企业将面临全业务、全方位、全流程的监控&#xff0c;企业“合不合规、经不经得起核查”&#xff0c;成为企业经营的一个重大考题。在此大环境下&#xff0c;财税安全成为企业经营中重要一环&#xff0c;尤为突出…

算法打卡day46|动态规划篇14| Leetcode 1143.最长公共子序列、1035.不相交的线、53. 最大子序和

算法题 Leetcode 1143.最长公共子序列 题目链接:1143.最长公共子序列 大佬视频讲解&#xff1a;1143.最长公共子序列视频讲解 个人思路 本题和718. 最长重复子数组很相像&#xff0c;思路差不多还是用动态规划。区别在于这题不要求是连续的了&#xff0c;但要有相对顺序 解…

PHP婚恋小程序开发源码支持微信+公众号+APP

随着社会的发展和人们生活节奏的加快&#xff0c;传统的相亲方式已经不能满足现代人的需求。在此背景下&#xff0c;有人想到通过线上小程序的方式来满足更多的人进行相亲&#xff0c;所以在此情况下&#xff0c;婚恋相亲小程序由此出现。婚恋相亲小程序的功能有会员功能&#…

MobX进阶:从基础到高级特性全面探索

MobX 提供了丰富的高级特性,包括计算属性、反应式视图、中间件、异步流程控制、依赖注入和动态 observable 、在服务端渲染和 TypeScript 支持方面提供了良好的集成。这些特性进一步增强了 MobX 在状态管理方面的灵活性和可扩展性,使其成为一个功能强大、易于使用的状态管理解决…

openkylin系统通过网线连接ubuntukylin系统上网攻略

openkylin系统通过网线连接ubuntukylin系统上网攻略 主机1&#xff1a;x64 amd &#xff0c;系统&#xff1a;ubuntukylin 22.04 &#xff0c;状态&#xff1a;通过wifi连接热点进行上网&#xff0c;并共享网络。 主机2&#xff1a;x64 intel &#xff0c;系统&#xff1a;ope…

拓扑排序(Topological Sorting)

拓扑排序可以使用邻接表&#xff0c;邻接矩阵来存储。 DAG有向邻接图才有拓扑排序&#xff0c;非DAG没有。 什么是拓扑排序&#xff08;Topological Sorting&#xff09; - 简书 数据结构&#xff08;八&#xff09;&#xff1a;邻接表与邻接矩阵 - 简书 Python3 列表 | 菜…

大世界基尼斯见证辉煌,云仓酒庄首届酒类培训新高度诞生

近日&#xff0c;一场规模盛大的酒类培训盛会&#xff0c;在云仓酒庄的精心组织下圆满落幕。此次培训活动以其卓着的成果和盛大的规模&#xff0c;创下了大世界基尼斯纪录&#xff0c;为酒类培训领域树立了新的标杆。这一成就的取得&#xff0c;背后是云仓酒庄团队无数的心血与…

GPT 作词 + Suno 作曲|2 分钟成就一个音乐梦想!

嗨&#xff01;我是小谷&#xff0c;大家好久不见~ 今天&#xff0c;我要和大家宣布一个好消息&#xff01;&#xff01;&#xff01; 我出歌啦&#xff01;&#xff01; 词曲都是我自己&#xff08;借助 AI&#xff09;创作的 作为个人第一支单曲&#xff0c; 我给这首歌取…

Leetcode 11.盛最多水的容器(暴力->双指针)

给定一个长度为 n 的整数数组 height 。有 n 条垂线&#xff0c;第 i 条线的两个端点是 (i, 0) 和 (i, height[i]) 。 找出其中的两条线&#xff0c;使得它们与 x 轴共同构成的容器可以容纳最多的水。 返回容器可以储存的最大水量。 说明&#xff1a;你不能倾斜容器。 示例 …

MAC系统安装PHP、Java、Python、mysql、Composer等环境无权限问题的详细操作方法说明。

本篇文章主要讲解MAC系统安装PHP、Java、Python、mysql、Composer等环境无权限问题的详细操作方法说明。通过本篇文章你可以快速掌握brew安装相对应环境的能力。 作者&#xff1a;任聪聪 日期&#xff1a;2024年4月12日 一、brew介绍及安装说明 官网地址&#xff1a;https://b…

node.js 模版引擎

模版引擎 一、什么是模版引擎&#xff1a; 模版引擎是为了使用户界面与业务逻辑&#xff08;内容&#xff09;分离而产生的&#xff0c;它可以生成特定格式的文档&#xff0c;用于网站的模版引擎就会生成一个标准的文档就是将模版文件和数据通过模版引擎生成一个html文档。 常…

财务信息化与财务软件有何区别与联系?

财务产品与财务信息化&#xff0c;两者究竟有何不同&#xff0c;又有何相通之处&#xff1f;或许&#xff0c;你心中也充满了这样的疑惑。那么&#xff0c;让我用一则小故事&#xff0c;为你揭晓其中的秘密。 想象这样一个场景&#xff0c;长尾狐狸&#xff0c;作为饭团公司的…

2024-8.python作用域+函数其他

变量的作用域 讲到了函数就必须介绍变量的作用域相关。 作用域指的是变量的有效范围。变量并不是在哪个位置都可以访问的&#xff0c;访问权限取决于这个变量是在哪里赋值的&#xff0c;也就是在哪个作用域内赋的值。变量在哪个作用域内赋值&#xff0c;则表示该变量的作用域就…

艾体宝方案 | ITT-Profitap IOTA——铁路运输的远程网络捕获和故障排除方案

在移动互联时代&#xff0c;铁路运输的数字化转型已成不可逆转的趋势。然而&#xff0c;随之而来的是对网络连接质量和故障排查的更高要求。本文将探讨如何利用艾体宝Profitap IOTA技术&#xff0c;在火车上实现远程网络捕获和故障排查&#xff0c;助力铁路运输行业迈向智能化未…

[Kubernetes] kubectl 命令指南

文章目录 1. 检查集群状态2. 使用 Pod3. 使用部署4. 使用服务5. 使用 ConfigMap 和 Secret6.调试与故障排除7. 清理8. 使用命名空间9. 管理持久卷10. 处理节点11. 资源配额和限制范围12. 访问API对象 1. 检查集群状态 kubectl cluster-info&#xff1a;此命令提供有关集群及其主…

java swing电商出入库管理系统eclipse开发Mysql数据库CS结构java编程

一、源码特点 java swing 电商出入库管理系统 是一套完善的窗体设计系统&#xff0c;对理解SWING java 编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;&#xff0c;系统主要采用C/S模式开发。 应用技术&#xff1a;javamysql 开发工具&#xff1…

vue3全局挂载方法

main.js文件 import { createApp } from vueimport Cookies from js-cookieimport ElementPlus from element-plus import zhCn from "element-plus/dist/locale/zh-cn"; // 中文语言 import /assets/styles/index.scss // global cssimport App from ./App import …

WEB前端-用户注册倒计时

<body><textarea name"" id"" cols"30" rows"10">用户注册协议欢迎注册成为京东用户&#xff01;在您注册过程中&#xff0c;您需要完成我们的注册流程并通过点击同意的形式在线签署以下协议&#xff0c;请您务必仔细阅读…