Leetcode 202 快乐数(HashSet,环形链表思想)

Leetcode 202 快乐数(HashSet)

    • 解法1 : 用HashSet来检测循环
    • :star:为什么说数字n的位数由log n给定呢?
    • 解法2 : 链表的思想[出现循环表示链表出现环],使用快慢指针法

题目链接>>>>>>>>>>>>>>


在这里插入图片描述

解法1 : 用HashSet来检测循环

【HashSet】
计算sum,如果sum == 1 ,就可以返回true
如果hashset中没有sum,那就一直循环,但如果发现hashset中包含当前sum,就是死循环喽,那就可以返回false !
需要使用hash表来保存每次的sum。

时间复杂度O:(logN) [见后]
空间复杂度O:(logN) [见后]

class Solution {public boolean isHappy(int n){// 如果sum == 1 ,就可以返回true// 如果发现hashset中包含当前sum,就是死循环喽,那就可以返回false// 需要使用hash表来保存每次的sumint sum = 0;HashSet<Integer> hashset = new HashSet<>();while(!hashset.contains(sum)){ // 当hashset中不包含当前sum就一直循环,包含了就说明死循环了,就输出falsesum = 0;hashset.add(n);// 把n加进hashset// 计算sumwhile(n / 10 != 0){sum += (n%10)* (n%10);n = n/10;}sum += (n%10)* (n%10);if(sum == 1) return true;  // 如果sum为1则输出true// n = sumn = sum;}return false;}
}

java的hashset中add方法有返回值,就可以不用contains方法了,可以合二为一——add方法有返回值true和false
在上一个方法的基础上,应用了hashset.add,如果成功添加就有返回值true,如果没有成功添加就有返回值false

class Solution {public boolean isHappy(int n){int sum = 0;HashSet<Integer> hashset = new HashSet<>();while(hashset.add(sum)){ // 当hashset中不包含当前sum就一直循环,包含了就说明死循环了,就输出falsesum = 0;// 计算sumwhile(n / 10 != 0){sum += (n%10)* (n%10);n = n/10;}sum += (n%10)* (n%10);if(sum == 1) return true; n = sum;  }return false;}
}

在这里插入图片描述


⭐️为什么说数字n的位数由log n给定呢?

数字n的位数是log n是因为:我们通常使用的数字系统是以10为基数的十进制系统。在十进制系统中,一个数字n的位数可以通过对n取以10为底的对数来计算。例如,对于数字n=12345,它的位数是log10(12345) ≈ 4.09,取整后为5。因此,我们可以说数字n的位数是log n。同样地,在其他进制系统中,我们可以使用相应的基数来计算数字的位数。


解法2 : 链表的思想[出现循环表示链表出现环],使用快慢指针法

参照LeetCose环形链表
环形链表思想,快2慢1指针,好好好方法哦✋

时间复杂度:O(logN)
空间复杂度:O(1)

class Solution {public boolean isHappy(int n){// 使用环形链表的判断方法// 快2慢1指针,只要两者相遇则说明有环,无法相遇则无环int slow = square(n);int fast = square(square(n));  slow = n;fast = square(fast);   while(slow != fast){slow = square(slow);fast = square(square(fast));   }if(slow == 1) return true;return false;}public int square(int n){ // 用来处理平方和求和操作int sum = 0;while(n / 10 != 0){sum += (n%10) * (n%10);n = n/10;}sum +=  (n%10) * (n%10);return sum;}
}

在这里插入图片描述

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

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

相关文章

用 Java 在 PDF 中创建和管理图层,实现交互式文档

PDF 图层&#xff08;也称为可见图层或附加图层等&#xff09;是组织和管理 PDF 文档中内容可见性的一种方法。PDF 图层可用于创建交互式文档、隐藏或显示特定信息、创建多语言版本文档等。通过添加和删除图层&#xff0c;用户可以根据需要定制 PDF 文档指定内容的可见性与显示…

PO模式在selenium自动化测试框架的优势

大家都知道po模式可以提高代码的可读性和减少了代码的重复&#xff0c;但是相对的缺点还有&#xff0c;今天通过本文一起学习下PO模式在selenium自动化测试框架的优势&#xff0c;需要的朋友可以参考下 PO模式简介 1.什么是PO模式 PO模型是:Page Object Model的简写 页面对象…

国内有哪些做得好的企业协同办公软件

在当今信息化时代&#xff0c;企业协同办公软件成为了提升企业效率和推动协作的重要工具。国内市场涌现出许多优秀的企业协同办公软件&#xff0c;为企业提供了高效、便捷的协同办公解决方案。在本文中&#xff0c;我们将向大家介绍3款在国内好评如潮的企业协同办公软件&#x…

项目知识点总结-过滤器-MD5注册-邮箱登录

&#xff08;1&#xff09;过滤器 使用过滤器验证用户是否登录 /** * Title: NoLoginFilter.java * Package com.qfedu.web.filter * Description: TODO(用一句话描述该文件做什么) * author Feri * date 2018年5月28日 * version V1.0 */ package com.gdsdx…

Mingw快捷安装教程 并完美解决出现的下载错误:The file has been downloaded incorrectly

安装c语言编译器的时候&#xff0c;老是出现The file has been downloaded incorrectly&#xff0c;真的让人 直接去官网拿压缩包&#xff1a;https://sourceforge.net/projects/mingw-w64/files/ &#xff08;往下拉找到那个x86_64-win32-seh的链接&#xff0c;点击后会自动…

【Java题】实现继承和多态的例子

一&#xff1a;题目 1.员工类Employee&#xff1a; &#xff08;1&#xff09;私有成员变量&#xff1a;姓名&#xff0c;年龄&#xff0c;工资 &#xff08;2&#xff09;提供无参&#xff0c;有参构造 &#xff08;3&#xff09;成员方法&#xff1a;work()方法——员工工作 …

AUTOSAR AP 硬核知识点梳理(2)— 架构详解

一 AUTOSAR 平台逻辑体系结构 图示逻辑体系结构描述了平台是如何组成的,有哪些模块,模块之间的接口是如何工作的。 经典平台具有分层的软件体系结构。定义明确的抽象层,每个抽象层都有精确定义的角色和接口。 对于应用程序,我们需要考虑使用的软件组件,希望它们是可重用的…

洗地机哪个好用?2023年洗地机推荐指南

说到提高家庭幸福生活的家电&#xff0c;洗地机肯定是少不了的&#xff0c;特别对于现在快节奏的生活来说&#xff0c;高效率的解决家务活&#xff0c;而且能够大幅度的提高生活质量。在市场上&#xff0c;消费者面临着选择合适洗地机的难题&#xff0c;因为有各种型号、功能和…

vue3 + fastapi 实现选择目录所有文件自定义上传到服务器

文章目录 ⭐前言&#x1f496; 技术栈选择 ⭐前端页面搭建&#x1f496; 调整请求content-type传递formData ⭐后端接口实现&#x1f496; swagger文档测试接口 ⭐前后端实现效果&#x1f496; 上传单个文件&#x1f496; 上传目录文件 ⭐总结⭐结束 ⭐前言 大家好&#xff0c…

嵌入式养成计划-45----QT--事件机制--定时器事件--键盘事件和鼠标事件--绘制事件

一百一十五、事件机制 当这件事情发生时&#xff0c;会自动走对应的函数处理&#xff08;重写的事件函数&#xff09; 115.1 事件处理简介 什么是事件&#xff1f; (重点) 件是由窗口系统或者自身产生的&#xff0c;用以响应所发生的各类事情&#xff0c;比如用户按下并释放…

进程与线程

进程 进程锁 进程之间数据不共享,但是共享同一套文件系统,所以访问同一个文件,或同一个打印终端,是没有问题的&#xff0c;而共享带来的是竞争&#xff0c;竞争带来的结果就是错乱&#xff0c;如何控制&#xff0c;就是加锁处理 part1&#xff1a;多个进程共享同一打印终端 …

【框架源码篇 03】Spring源码手写篇-手写AOP

Spring源码手写篇-手写AOP 手写IoC和DI后已经实现的类图结构。 一、AOP分析 1.AOP是什么? AOP[Aspect Oriented Programming] 面向切面编程&#xff0c;在不改变类的代码的情况下&#xff0c;对类方法进行功能的增强。 2.我们要做什么&#xff1f; 我们需要在前面手写IoC&…

排序算法,冒泡排序算法及优化,选择排序SelectionSort,快速排序(递归-分区)

一、冒泡排序算法&#xff1a; 介绍&#xff1a; 冒泡排序&#xff08;Bubble Sort&#xff09;是一种简单直观的排序算法。它重复地走访过要排序的数列&#xff0c;一次比较两个元素&#xff0c;如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需…

关于SparkRdd和SparkSql的几个指标统计,scala语言,打包上传到spark集群,yarn模式运行

需求&#xff1a; ❖ 要求:分别用SparkRDD, SparkSQL两种编程方式完成下列数据分析,结合webUI监控比较性能优劣并给出结果的合理化解释. 1、分别统计用户&#xff0c;性别&#xff0c;职业的个数&#xff1a; 2、查看统计年龄分布情况&#xff08;按照年龄分段为7段&#xff0…

初识树结构和二叉树

一&#xff0c;树概念及结构 1.1树结构的概念 树是一种非线性的数据结构&#xff0c;它是由n&#xff08;n>0&#xff09;个有限结点组成一个具有层次关系的集合。把它叫做树是因为它看起来像一棵倒挂的树&#xff0c;也就是说它是根朝上&#xff0c;而叶朝下的。 注意&a…

AI全栈大模型工程师(九)Function Calling 的机制

文章目录 Function Calling 的机制Function Calling 示例 1:加法计算器Function Calling 实例 2:四则混合运算计算器后记Function Calling 的机制 Function Calling 示例 1:加法计算器 需求:用户输入任意可以用加法解决的问题,都能得到计算结果。 # 加载环境变量import o…

人工智能发展与结构科学

人工智能&#xff08;AI&#xff09;在各种应用中的影响力不断增强&#xff0c;从简单的计算任务到复杂的决策支持。但在这背后&#xff0c;AI的发展其实是一个关于结构演变的故事。从最早的线性结构&#xff0c;到今天的复杂网络结构&#xff0c;结构的演变对AI的能力和效率产…

【linux】查看下载应用在服务器的日志

查看日志路径 一般在配置文件中logback.xml 账号密码xshell连接服务器&#xff0c;进入日志路径 根据搜索关键字查看xxx.log文件内容 cat xxx.log | grep 关键字 下载 xxx.log 到本地&#xff0c;一般可以下载当天的日志文件到本地查看比较方便 sz xxx.log 参考文章&#xff…

Adobe 推出 Photoshop Elements 2024 新版

&#x1f989; AI新闻 &#x1f680; Adobe 推出 Photoshop Elements 2024 新版 摘要:Adobe 最新发布 Photoshop Elements 2024 版本,新增引入 AI 功能,提供匹配颜色、创建照片卷、一键选择照片天空或背景等新功能,界面也进行了优化更新。本次发布重点加强了 AI 支持,简化复杂…

【软考-中级】系统集成项目管理工程师 【19 项目收尾管理】

持续更新。。。。。。。。。。。。。。。 【第十九章】收尾管理 &#xff08;选择题1分&#xff09; 19.1 项目验收19.2 项目总结19.3系统维护19.3.1软件项目的后续工作19.3.2系统集成项目的后续工作 19.4 项目后评价1. 信息系统目标评价2. 信息系统过程评价3. 信息系统效益评价…