当前位置: 首页 > news >正文

【Python3】【力扣题】202. 快乐数

【力扣题】题目描述:

【Python3】代码:

1、解题思路:用哈希集合检测循环。设置集合记录每次结果,判断结果是否为1。若计算结果已在集合中则进入循环,结果一定不为1。

(1-1)知识点:集合:元素不重复的序列,大括号“{}”,元素之间逗号“,”隔开。

                           str(...):转为字符串。为了遍历每一个数字。

                           int(...):转为整数。为了进行数学运算。

                           sum(...):求和。

                           集合.add(...):往集合中添加元素。

class Solution:def isHappy(self, n: int) -> bool:res = {n}        # 将最初的n加入集合while n != 1:n = sum(int(x)**2 for x in str(n))  # 每一位数字的平方再求和if n in res: return Falseelse: res.add(n)return True

(1-2)知识点:set( ):创建空集合。

                           map(函数,序列):序列映射。序列中每一个元素调用函数执行操作,返回新序列。

注解:此处的 return n==1 相当于 if n==1:return True; else: return False

class Solution:def isHappy(self, n: int) -> bool:res = set()         # 创建空集合while n != 1 and n not in res:res.add(n)n = sum(map(lambda x:int(x)**2,str(n)))  # 每一位数字的平方再求和return n == 1

(1-3)知识点:n % 10:十进制的数字获取最低位。

                           n // 10:十进制的数字去除最低位,相当于右移。

class Solution:def isHappy(self, n: int) -> bool:# 计算每一位的数字的平方再求和,返回计算结果def get_next(n):total = 0while n > 0:total += (n % 10) ** 2n //= 10return total# 判断是否为1res = set()while n != 1:res.add(n)n = get_next(n)if n in res: return Falsereturn True

2、解题思路:快慢指针。慢指针计算一次,快指针计算两次,判断是否为1。若快指针和慢指针相同且不为1,则进入循环,结果一定不为1。

注解:slow,fast = n,get_next(n) 相当于 slow=n;fast=get_next(n)。

class Solution:def isHappy(self, n: int) -> bool:# 计算每一位的数字的平方再求和,返回计算结果def get_next(n):total = 0while n > 0:total += (n % 10) ** 2n //= 10return totalslow,fast = n,get_next(n)while slow != fast:slow = get_next(slow)fast = get_next(get_next(fast))return fast == 1

3、解题思路:数学。大量求解得出的数学规律,结果不为1的循环为4→16→37→58→89→145→42→20→4。因此只要计算结果在这个循环中,一定不为1。

class Solution:def isHappy(self, n: int) -> bool:cycle_num = {4,16,37,58,89,145,42,20}   # 集合while n not in cycle_num:n = sum(map(lambda x:int(x)**2,str(n)))   # 每一位数字的平方再求和if n == 1: return Truereturn False

 

相关文章:

  • 使用Golang与Web3.js进行区块链开发
  • 体育竞技分析
  • 前端Vue页面中如何展示本地图片
  • 4、QtCharts 做心电图
  • Java 入门指南:使用 Docker 创建容器化 Spring Boot 应用程序
  • css样式中 before、after 里面的 content 乱码
  • 修改svc的LoadBalancer的IP引发的惨案
  • C++11的lambda表达式
  • nlp之加载电商评论集
  • 真机环境配置教程
  • 项目进度延误,危机管理5大注意事项
  • 评论功能的选择难题:数据结构如何选定?
  • 什么是React中的有状态组件(stateful component)和无状态组件(stateless component)?
  • [每周一更]-(第69期):特殊及面试的GIT问题解析
  • 计算机网络重点概念整理-第七章 网络安全【期末复习|考研复习】
  • [ JavaScript ] 数据结构与算法 —— 链表
  • 【MySQL经典案例分析】 Waiting for table metadata lock
  • 【node学习】协程
  • android高仿小视频、应用锁、3种存储库、QQ小红点动画、仿支付宝图表等源码...
  • CSS进阶篇--用CSS开启硬件加速来提高网站性能
  • flask接收请求并推入栈
  • Intervention/image 图片处理扩展包的安装和使用
  • JS专题之继承
  • oldjun 检测网站的经验
  • overflow: hidden IE7无效
  • socket.io+express实现聊天室的思考(三)
  • SpringBoot几种定时任务的实现方式
  • tweak 支持第三方库
  • webpack项目中使用grunt监听文件变动自动打包编译
  • zookeeper系列(七)实战分布式命名服务
  • 当SetTimeout遇到了字符串
  • 聊聊hikari连接池的leakDetectionThreshold
  • 前端代码风格自动化系列(二)之Commitlint
  • 设计模式(12)迭代器模式(讲解+应用)
  • 设计模式走一遍---观察者模式
  • 我与Jetbrains的这些年
  • 《天龙八部3D》Unity技术方案揭秘
  • 不要一棍子打翻所有黑盒模型,其实可以让它们发挥作用 ...
  • 回归生活:清理微信公众号
  • 积累各种好的链接
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • #define、const、typedef的差别
  • #NOIP 2014# day.1 T3 飞扬的小鸟 bird
  • (C语言)字符分类函数
  • (多级缓存)缓存同步
  • (二) Windows 下 Sublime Text 3 安装离线插件 Anaconda
  • (附源码)ssm经济信息门户网站 毕业设计 141634
  • (附源码)计算机毕业设计ssm基于Internet快递柜管理系统
  • (力扣)循环队列的实现与详解(C语言)
  • (每日持续更新)信息系统项目管理(第四版)(高级项目管理)考试重点整理第3章 信息系统治理(一)
  • (三)Pytorch快速搭建卷积神经网络模型实现手写数字识别(代码+详细注解)
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)关于pipe()的详细解析
  • (转)人的集合论——移山之道