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

Leetcode面试经典150题-202.快乐数

题目比较简单,重点是理解思想

解法都在代码里,不懂就留言或者私信

面试的时候可以用我提交的解法,这个更优

class Solution {/**第一种-常规解法,主要的思想是如果出现了循环或者等于1,计算过程就停止如果等于1,说明是快乐术,否则就是出现了循环 */public boolean isHappy2(int n) {if(n == 1) {return true;}/**我们用一个HashSet保存曾经出现过的数 */Set<Integer> set = new HashSet<>();int sum = n;while(sum != 1 && !set.contains(sum)) {/**注意这一句要放在最前面,因为下面sum马上要改变了,如果不放第一个,有可能初始sum会被忽略 */set.add(sum);/**记录当前数所有位的平方和 */int curSum = 0;/**取每一位的平方相加 */while(sum != 0) {int curNum = sum % 10;curSum += curNum * curNum;sum = sum / 10;}/**赋值给sum进行之后的计算 */sum = curSum;}/**如果等于1退出的说明是快乐数,如果不是就是因为重复退出的,不是快乐数 */return sum == 1;}/**第二种-找规律贪心,列举出一堆数后你会发现,只要sum不出现4就不会死循环,出现了1就可以结束,我们就可以把循环条件变成sum != 1&& sum !=4这个解法就不用set来记录了 */public boolean isHappy(int n) {if(n == 1) {return true;}/**我们用一个HashSet保存曾经出现过的数 */int sum = n;while(sum != 1 && sum != 4) {/**记录当前数所有位的平方和 */int curSum = 0;/**取每一位的平方相加 */while(sum != 0) {int curNum = sum % 10;curSum += curNum * curNum;sum = sum / 10;}/**赋值给sum进行之后的计算 */sum = curSum;}/**如果等于1退出的说明是快乐数,如果不是就是因为重复退出的,不是快乐数 */return sum == 1;}
}


http://www.mrgr.cn/news/25759.html

相关文章:

  • 《小迪安全》学习笔记04
  • VSCode配置C++环境
  • 登山第九梯:稀疏点云实例分割——又快又准
  • 图片详解,最简单易懂!!!Ubuntu增强功能
  • 文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《基于攻击者视角的综合能源系统网络攻击策略 》
  • 【高性能】什么是QPS、RT?
  • 详解贪心算法
  • 外包干了三年,快要废了。。。
  • Quantlab 5.11含ETF策略年化52%以及卡玛比4.79的债券策略(全量ETF后复权数据下载)
  • 基于.NET的土特产销售系统—计算机毕业设计源码27155
  • 大聪明教你学Java | 深入浅出聊 Elastic search
  • 衡石分析平台使用手册-离线环境依赖组件准备
  • 刚刚,OpenAI发布了o1模型,国内可用
  • 【生日视频制作】酒吧霸屏视频制作软件一键生成器方法教程AE模板修改文字软件特效素材【AE模板】
  • PHP开发的站长导航网源码修复版
  • 内核线程之User-Mode Helpers
  • Python在AOIP(Audio Over IP)方面的应用探讨
  • 啊?不会这就是草莓吧?OpenAI发布最新模型——OpenAI o1-preview
  • 中等职业学校新媒体一键分发软件实训室解决方案
  • ps5计时器游戏厅计时计费软件 佳易王电玩店带定时提醒的计时计费管理系统操作教程