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

解决方法一:利用set 集合属性

class Solution {public boolean isHappy(int n) {if (n == 1) {return true;}Set<Integer> numSet = new HashSet<>();numSet.add(n);int next;while ((next = getNext(n)) > 0 && !numSet.contains(next)){numSet.add(next);n = next;}return next == 1;}public static int getNext(int n){int i;int sum = 0;while (n != 0){i = n % 10;sum += i*i;n = n/10;}return sum;}
}

解决方法二:快慢指针

class Solution {public int getNext(int n) {int totalSum = 0;while (n > 0) {int d = n % 10;n = n / 10;totalSum += d * d;}return totalSum;}public boolean isHappy(int n) {int slowRunner = n;int fastRunner = getNext(n);while (fastRunner != 1 && slowRunner != fastRunner) {slowRunner = getNext(slowRunner);fastRunner = getNext(getNext(fastRunner));}return fastRunner == 1;}
}

参考:
https://leetcode-cn.com/problems/happy-number/solution/

算法----------快乐数 (Java版本)相关推荐

  1. 插入排序算法 java_排序算法实现-插入排序(Java版本)

    原标题:排序算法实现-插入排序(Java版本) 插入排序(英语:Insertion Sort)是一种简单直观的排序算法.它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到 ...

  2. JAVA算法:走迷宫回溯算法设计(JAVA版本)

    JAVA算法:走迷宫回溯算法设计(JAVA版本) 迷宫数组 int[][] maze = {                 {0, 1, 0, 0, 0},                 {0, ...

  3. leetcode202快乐数(JAVA版)

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

  4. CSDN蓝桥杯算法题——题解Java版本——切面条

    目录 题目:切面条 答案目标: 推导过程: 解析过程: 对照Java编码1: 对照Java编码2: 总结: 题目:切面条 一根高筋拉面,中间切一刀,可以得到2根面条. 如果先对折1次,中间切一刀,可以 ...

  5. 网易实习面经中的算法题(java版本含注释)

    目录 前言 7. 整数反转(中等) 9. 回文数(简单) 14. 最长公共前缀(简单) 20. 有效的括号(简单) 23. 合并K个升序链表(困难) 64. 最小路径和(中等) 103. 二叉树的锯齿 ...

  6. 算法------零钱兑换(Java版本)

    题目 给定不同面额的硬币 coins 和一个总金额 amount.编写一个函数来计算可以凑成总金额所需的最少的硬币个数.如果没有任何一种硬币组合能组成总金额,返回 -1.示例 1:输入: coins ...

  7. 算法------------完全平方数(Java版本)

    题目 给定正整数 n,找到若干个完全平方数(比如 1, 4, 9, 16, ...)使得它们的和等于 n.你需要让组成和的完全平方数的个数最少.示例 1:输入: n = 12 输出: 3 解释: 12 ...

  8. 微博短链接的生成算法(Java版本)

    最近看到微博的短链接真是很火啊,新浪.腾讯.搜狐等微博网站都加入了短链接的功能.之所以要是使用短链接,主要是因为微博只允许发140 字,如果链接地址太长的话,那么发送的字数将大大减少.短链接的主要职责 ...

  9. java短链接原理_微博短链接的生成算法(Java版本)

    最近看到微博的短链接真是很火啊,新浪.腾讯.搜狐等微博网站都加入了短链接的功能.之所以要是使用短链接,主要是因为微博只允许发140 字,如果链接地址太长的话,那么发送的字数将大大减少.短链接的主要职责 ...

最新文章

  1. win7修改网络计算机名字,小编分析win7系统修改计算机名字的操作方法
  2. 一文看尽 27 篇 CVPR 2021 2D 目标检测论文
  3. 公众号24小时自动吸粉秘密!一次推广终身有客户
  4. 12-思科防火墙:ASA会话超时
  5. 腾讯视频如何多倍速播放视频
  6. c语言 连接哨兵 redis6,Redis哨兵--缓存服务器
  7. GIS笔记-使用Geoserver搭建MWTS服务(构建离线GIS服务)
  8. java 处理时间的类_java 日期时间处理类
  9. 《SQL高级应用和数据仓库基础(MySQL版)》学习笔记 ·003【表的约束、表的CRUD操作(DDL语句)】
  10. hbase1.2.4安装
  11. JS基础_js编写位置
  12. Linux中压缩文件后生成,在 Linux系统中,压缩文件后生成后缀为.gz文件的命令是 gzip 。...
  13. ER Studio 直接导出sql建表
  14. 微信小程序蓝牙打印开发心得
  15. 【MindSpore易点通机器人-01】你也许见过很多知识问答机器人,但这个有点不一样
  16. html5dragw3c,HTML5拖拽功能drag
  17. 干了半年的java Web,知道自己特别喜欢游戏开发,那就去干吧
  18. [常用类]Instant类的使用
  19. 在网页前端调用exe程序并传参
  20. 【游戏客户端】实现游戏中的小地图

热门文章

  1. python解压版怎么安装不了_python 连接数据库mysql解压版安装配置及遇到问题
  2. 如何在 Kubernetes 中对无状态应用进行分批发布
  3. 目标检测-基于Pytorch实现Yolov3(1)- 搭建模型
  4. Angular 4.x Events Bubbling
  5. Mysql 5.7 liunx 忘记密码的补救方法
  6. 禁止显示“You have new mail in /var/spool/mail/root”
  7. linux 下 php 安装 Gearman
  8. 国内做事就要高调——财富人生:邹果庆:中国新蛋网总裁
  9. 开发部署提速8倍!这款IDE插件了解一下?
  10. 如何在cnblogs中插入LaTeX数学公式